node.js – 如何处理循环中的promise?

前端之家收集整理的这篇文章主要介绍了node.js – 如何处理循环中的promise?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这就是我想做的
var response = [];

Model.find().then(function(results){
   for(r in results){
      MyService.getAnotherModel(results[r]).then(function(magic){
          response.push(magic);
      });          
   }
});

//when finished
res.send(response,200);

然而它只返回[],因为异步的东西还没有准备好.我正在使用使用Q promise的sails.js.任何想法如何在所有异步调用完成后返回响应?

https://github.com/balderdashy/waterline#query-methods(承诺方法)

解决方法

由于水线使用Q,您可以使用allSettled方法.
你可以找到 more details on Q documentation.
Model.find().then(function(results) {
  var promises = [];
  for (r in results){
    promises.push(MyService.getAnotherModel(results[r]));
  }

  // Wait until all promises resolve
  Q.allSettled(promises).then(function(result) {
    // Send the response
    res.send(result,200);
  });
});

猜你在找的Node.js相关文章