如何在异步函数中将promise.all与forEach一起使用

时间:2019-12-24 10:38:50

标签: reactjs

我内部有一个异步函数正在使用forEach和promise.all。我的问题是如何使函数停止,直到完全渲染forEach中的值之一,然后再进行下一个操作。

sentingMailtoOneRestauarnt这是一个很大的函数,现在只能从其中获取部分值,因为forEach中的下一个值是在第一个值完成之前调用的。

[{1: 8, 2: 9, 3: 10, 4: 11, 5: 12, 6: 13, 7: 14}]

}

2 个答案:

答案 0 :(得分:1)

从代码中看,您似乎已经在这里使用async。跳过承诺-

const responses = await fetchAllConnectedAcccounts(null);
const results = [];
for (const response of responses){
 if (response){
   results.push(await sentingMailtoOneRestauarnt(response, yesterday));
 }
}

// do whatever with results...

答案 1 :(得分:0)

当前,您的数组中充满了已解决的承诺(仅在解决了承诺之后才将其推入)。

exports.handler = async () => {

return fetchAllConnectedAcccounts(null).then((response) => {
    var promises_array = []
    response.forEach((data) => {
        if (data) {
            var promise = sentingMailtoOneRestauarnt(data, yesterday);
            promises_array.push(promise); // push to array before promise is resolved
        }
    })
    return Promise.all(promises_array); // wait for resolving here

    /*.then((result) => {
        return result;
    })*/ // unnecessary
}).catch((err) => {
    console.log(err)
});
相关问题