ich hier asynchronen Code promises.The Problem zu laufen versuchen ist, dass die Antwort auch genannt wird, bevor die Rückrufe ihre Ausführung beenden.Versprechen nicht in Knoten JS arbeiten
Anmerkung: Ich schrieb eine Callback-Funktion in einem loop.I ein Array drucken, nachdem die Schleife das Array finished.But wird gedruckt wird, bevor die Schleife endet.
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.
Der Code lautet wie folgt:
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);
})
}
Wie gesagt, die Anweisung console.log (res) in der Case-Anweisung druckt '[]'.
Bitte helfen!
Vielen Dank im Voraus!
Was ist _compile_run.runPython_? – TGrif
Es ist ein Modul zum Kompilieren des angegebenen Codes in einer bestimmten Sprache mit der angegebenen Eingabe. (Sowohl der Code als auch die Eingabe werden vom Front-End empfangen.) – Raman
Sie lösen das Ergebnis _before_ die Kompilierung ist abgeschlossen. – TGrif