【发布时间】:2018-03-15 04:43:07
【问题描述】:
我正在使用 axios.all 通过一组项目调用循环并为每个项目发出获取请求,以便我可以以正确的顺序保存它们的数据。现在我有一个 Promise 数组,所有这些都用正确的数据解析,并且所有这些都完成时的回调函数被触发。
现在我只需要遍历 Promises 并保存它们的值,但我不知道如何访问它们的值!
let promises = [];
for (let report of response.data.res.body.result) {
let dto2 = {
customerId: state.member.customerId,
reportToken: report.reportToken
}
promises.push(axios.post('http://localhost:3001/api/pullReport', dto2));
}
console.log("promises", promises);
axios.all(promises).then(function() {
console.log("done!");
promises.forEach(function(res) {
console.log("res", res);
// commit('SAVE_REPORT', res.value);
})
// resolve('Reports saved.');
});
这是每个 Promise 在 forEach 循环中被安慰时的样子:
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Object <<<<<<<<<<< NEED THIS
我只需要能够使用 PromiseValue 对象调用 commit('SAVE_REPORT'),但我不知道要传入什么!我试过 res.value、res.val、res.promiseValue……这有什么秘密吗?
【问题讨论】:
-
大多数 Promise 库将每个响应(按照它们被调用的顺序——而不是它们返回的顺序)发送到解析回调。您可以通过说
.then(function([res1, res2, res3, etc.])来解构,或者您可以通过说.then(function(responses)将它们全部捕获到一个数组中 -
console.log(util.inspect(res)) 得到什么?
标签: javascript asynchronous promise axios