I持っているサーバーにブラウザ(クライアント)からのユーザ入力(現在の名前app.json)をダウンロード機能非同期シリーズは期待通りの順序では動作しません
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);
}
私は別の機能を持っています上でダウンロードしたファイルを取り出し、必要な形式(final.json)に変換します。
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);
}
が、私はそれらを順番に実行したいので、私はこの
async.series([
downloadUpload,
UpdateCode
],function(err,result){
if(err) throw err;
else{
console.log(result);
}
});
問題のように非同期シリーズの方法を使用がダウンロード取得されたファイル(app.json)で、エラーが言って表示されますそのapp.jsonは現在のフォルダまたはディレクトリに存在しません。どこが間違っていますか?
[非同期呼び出しから応答を返すにはどうすればいいですか?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous- call) –
ファイルがダウンロードされる前に 'callback'を呼び出しているからです。 –
私はあなたを得ませんでした。コールバックは非同期シリーズ関数の一部であり、私はそれを複製しようとしています。コールバックが正しく機能するためには最初の関数でコールバックを削除する必要がありますか? – Saikiran