2016-04-23 16 views
1
 Promise.all(function(){ 
    for(var numb in req.body) 
    { 

    console.log(numb+":"+req.body[numb]); 

    checkValue(numb,function(err,result){ 
     if(result) 
      { 
     console.log(result); 
     send[result]="true"; 
     console.log(send); 

      } 
     if(err) 
      {console.log(err+"not");} 
    }); 
    } 
}).then(res.json(send)); 

Ich möchte die for-Schleife zuerst ausführen und dann die Daten zurücksenden. Ich versuche, Versprechen zu verwenden, aber ich bin mir nicht sicher, ob es korrekt ist. Könnte mir jemand helfen?Versprechen in Schleife in node.js

+0

Formatieren/indent Code richtig lesbar zu machen. – jfriend00

+0

Sie übergeben ein Array von Versprechen an 'Promise.all()'. Sie übergeben keine Funktion an 'Promise.all()'. Es gibt auch keine asynchronen Vorgänge in dem von Ihnen angezeigten Code, daher gibt es keinen Grund, Versprechungen überhaupt zu verwenden. Sie können einfach eine normale Schleife programmieren. – jfriend00

Antwort

9

Wenn Sie Promises verwenden, überprüfen Sie this

aus kann dies nur beheben, indem Sie folgendermaßen vorgehen:

var promises = []; 

for(var numb in req.body) 
{ 
    promises.push(checkValue(numb)); 
} 

Promise.all(promises)  
.then(function(data){ /* do stuff when success */ }) 
.catch(function(err){ /* error handling */ }); 

function checkValue(numb){ 
return new Promise(function(resolve, reject){ 
    // place here your logic 
    // return resolve([result object]) in case of success 
    // return reject([error object]) in case of error 
}); 
Verwandte Themen