2016-04-23 3 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)); 

Я хочу сначала выполнить цикл for, а затем отправить данные обратно. Я пытаюсь использовать prom.all, но я не уверен, правильно ли это. может кто-нибудь помочь мне?обещание в цикле в node.js

+0

Отформатируйте/отступа код правильно, чтобы сделать его доступным для чтения. – jfriend00

+0

Вы передаете массив обещаний 'Promise.all()'. Вы не передаете функцию 'Promise.all()'. В коде, который вы показываете, нет асинхронных операций, поэтому нет никаких оснований для использования обещаний. Вы можете просто закодировать регулярный цикл. – jfriend00

ответ

9

Если вы используете посылы, проверить this

вы можете просто исправить это, выполнив следующие действия:

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 
}); 
Смежные вопросы