如何创建一个循环,其中每次迭代都会发出 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
});
我正在尝试创建一个循环,其中每次迭代都会向 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
});