首页 > 解决方案 > for each 循环中的异步代码

问题描述

这是我的第一篇文章,因为我通常会通过旧消息找到一种方法来回答我的问题......但这一次我被卡住了。我希望你能帮助我。

searchUser.forEach(function(item, i) {
        getUser(item)
        .then(objUser => {
            console.log(i);
            console.log(objUser);
            name = objUser.name;
            let idConversation = objUser.id;
            createNewConversation(name, idConversation)
        })
    })

MygetUser是一个异步函数,我不知道为什么,但似乎我的构造不起作用。它只会创建我进行的对话数量,但会创建最后一次对话的内容,而不是其他对话的内容……知道我在那里缺少什么吗?顺便console.log(i)1然后0

仅供参考,这getUser是一个从用户返回数据的函数。

标签: javascriptasynchronousforeach

解决方案


在 forEach 循环中使用异步函数可能很难调试,我建议在解决所有承诺后使用Promise.all调用createNewConversation

const promises = searchUser.map(item => getUser(item));

Promise.all(promises).then(result => {
  result.forEach(({ name, id }) => {
    createNewConversation(name, id);
  });
});

推荐阅读