从已解析的Promise数组中获取值

时间:2017-10-03 21:38:47

标签: javascript asynchronous promise axios

我正在使用axios.all通过一系列项目调用循环,并为每个项目发出get请求,以便我可以按正确的顺序保存数据。现在我有一个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.');
});

以下是在forEach循环中安慰每个承诺的样子:

__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Object <<<<<<<<<<< NEED THIS

我只需要能够使用PromiseValue对象调用提交(&#39; SAVE_REPORT&#39;),但我不知道要传递什么!我已经尝试了res.value,res.val,res.promiseValue ......这有秘密吗?

1 个答案:

答案 0 :(得分:3)

axios.all创建一个新的promise,它将使用结果数组来解析。因此,要与这些结果进行交互,您只需要在.then块中为函数添加一个参数:

axios.all(promises).then(function(results) {
    results.forEach(function(res) {
        commit('SAVE_REPORT', res.value);
    });
});