我内部有一个异步函数正在使用forEach和promise.all。我的问题是如何使函数停止,直到完全渲染forEach中的值之一,然后再进行下一个操作。
sentingMailtoOneRestauarnt这是一个很大的函数,现在只能从其中获取部分值,因为forEach中的下一个值是在第一个值完成之前调用的。
[{1: 8, 2: 9, 3: 10, 4: 11, 5: 12, 6: 13, 7: 14}]
}
答案 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)
});