私は約束を使って非同期コードを実行しようとしています。ここでの問題は、コールバックが実行を終了する前でも応答が呼び出されることです。ノードJSでプロミスが機能しない
注:ループ内にコールバック関数を記述しました。ループが終了した後に配列を出力する必要がありますが、ループが終了する前に配列が出力されます。
router.post('/run',function(req,res){
var code=req.body.code;
var lang=req.body.lang;
var input=req.body.input;
var result=[];
switch(lang){
case 1:
calculate(code,input).then(function(res){
console.log(res);
});
}
});
function calculate(code,input){
var result=[]
return new Promise((resolve,reject)=>{
for(let i=0;i<input.length;i++){
compile_run.runPython(code, input[i], function (stdout, stderr, err) {
if(!err){
console.log(stdout);
result.push(stdout);
}
else{
console.log(err);
}
});
}
resolve(result);
})
}
先ほど述べたように、case文にステートメントはconsole.log(RES)は '[]' 印刷される次のよう
My question is :
1) Is it correct to use a callback within a loop?
2)If not,then what are the other methods of repeating a callback function.
コードです。
助けてください!
ありがとうございます!
_compile_run.runPython_とは何ですか? – TGrif
与えられたコードを特定の言語でコンパイルするモジュールです。 (コードと入力の両方がフロントエンドから受信されます) – Raman
コンパイルが完了する前に結果を解決しています。 – TGrif