gpt4 book ai didi

javascript - 为什么 Promise.all 会出错? : TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined

转载 作者:行者123 更新时间:2023-12-04 14:35:36 25 4
gpt4 key购买 nike

我有以下 Controller 方法:

const org = await organisation.toJSON().name;
// The next line works fine, that's not the problem
const users = await organisation.getUsers(organisation.toJSON().id, User);
await Promise.all(users.forEach(async user => {
await sendAccountEmail(
user.email,
user.surname,
org
);
}));

对于 Promise行我收到一个错误:

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined



知道我的代码有什么问题吗?

最佳答案

您正在使用 Promise.all不正确。该方法希望你给它一个填充了 Promise 的数组(或另一个可迭代对象),然后它会一直等待,直到该数组中的所有 Promise 都已解决(已解决或被拒绝)。您不应该在参数内迭代数组,尤其是不要使用 forEach返回未定义,从而使您的代码等效于 await Promise.all(undefined) ——所以你现在可以明白为什么会出错了,不是吗?

你应该做的是使用 Array.map将您的用户数组转换为您要等待的 Promise 数组:

const userPromises = users.map(user => sendAccountEmail(user.email, user.surname, org));
await Promise.all(userPromises);

关于javascript - 为什么 Promise.all 会出错? : TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59397944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com