如何创建一个循环,其中每次迭代都会发出 returns 承诺的请求

How to create a loop where each iteration makes a request that returns a promise

我正在尝试创建一个循环,其中每次迭代都会向 Asana 的 API 发出请求并将 return 值推入数组。

例如

for(thing of totalThings){
 getAProject(some projectID)
 .then(function(getAProject's Response){
 someArray.push(getAProject's Response 
})
.catch();
}

我想在此 for 循环结束后使用 someArray,但我不确定应该将 return 语句放在哪里。

目标是逐页迭代 API 中的一组结果(例如任务)吗?你在使用 Asana JS 客户端吗?如果是这样,请参阅库的 Collections 文档,其中描述了执行此操作的各种方法。

否则,您是否正在做一些与此不同的事情,比如尝试同时获取有关一堆项目的信息?请注意,promise 代码是 异步的 ,因此如果您想在某个时候使用 someArray "after" 代码完成,您需要 "wait"为了所有的承诺。

假设 getAProject 本身 returns 是一个 promise,你可能有这样的东西:

var Promise = require('bluebird');
var responses = [];
for (...) {
  responses.push(getAProject(id));
}
Promise.all(responses).then(function(responses) {
  // Use the responses here
});