j'ai une fonction qui télécharge l'entrée utilisateur (actuellement nommé app.json) du navigateur (client) au serveursérie Async ne fonctionne pas dans un ordre comme prévu
function downloadUpload(callback){
//Using formidable node package for downloading user input to server
var form = new formidable.IncomingForm();
form.on('fileBegin', function(name, file) {
file.path = file.name;
});
form.parse(req, function(err, fields, files) {
res.writeHead(200, { 'content-type': 'text/plain' });
res.write('received upload:\n\n');
res.end(util.inspect({ fields: fields, files: files }));
});
callback(null);
}
J'ai une autre fonction prend le fichier téléchargé ci-dessus et le convertit au format requis (final.json) quelque chose comme ça.
function UpdateCode(callback){
var obj = fs.readFileSync('app.json', 'utf8');
var object = JSON.parse(obj);
var data2 = [];
for (var j = 0; j < object.length; j++) {
if (object[j].value == "TEST") {
data2.push(object[j]);
}
}
console.log(data2);
fs.appendFile('final.json', JSON.stringify(data2), function(err) {
if (err) throw err;
console.log('Saved!');
});
callback(null);
}
Je veux qu'ils courent dans un ordre, donc j'utilisé la méthode de la série async comme celui-ci
async.series([
downloadUpload,
UpdateCode
],function(err,result){
if(err) throw err;
else{
console.log(result);
}
});
Le problème est le fichier (app.json) est obtenir téléchargé et une erreur apparaît disant que app.json n'existe pas dans le dossier ou le répertoire en cours. Où vais-je mal?
Possible copie de [Comment renvoyer la réponse d'un appel asynchrone?] (Https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous- appel) –
Parce que vous appelez 'callback' avant que le fichier ne soit téléchargé. –
Je ne t'ai pas eu. Le rappel est une partie de la fonction série asynchrone et j'essaie de le répliquer. Voulez-vous dire que je devrais supprimer le rappel dans la première fonction pour qu'il fonctionne correctement? – Saikiran