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);
  });
});

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...