【发布时间】:2016-02-29 17:20:56
【问题描述】:
我有一个函数可以进行多个异步调用,这些调用使用返回的数据填充同一个对象。一旦对象完全填充,我需要对数据做一些事情,并且由于有多个调用,这不是基本的回调/承诺场景。
在这种情况下是否可以创建承诺?简化代码:
price_options = [] // when this is populated from all the async calls, I need to do stuff with it
sheet_columns = [3,5,7,89]
useServiceAccountAuth(credentials, function(error){ //google docs api
for (var i = 0; i < sheet_columns.length; i++) {
var params = {column_number: sheet_cols[i]}
do_async_call(params, function (e, data) {
data.forEach( function(item) {
price_options.push(item)
})
})
}
})
【问题讨论】:
-
你使用的是哪个 promise 库?
-
@Bergi 你能详细说明一下吗?我正在使用 Q,只是因为我有一些使用它的经验
-
@ilyo:和
Q.all一样。获取一系列 promise,然后等待它们。 -
只需将 Promise 替换为 Q,大多数 Promise 库和原生 js Promise 共享类似的方法名称。在文档中查找 Q.all 以查看其语法
-
小心
for循环和异步:stackoverflow.com/a/34615512/1225328
标签: javascript node.js promise q