javascript - 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
是一个从用户返回数据的函数。
解决方案
在 forEach 循环中使用异步函数可能很难调试,我建议在解决所有承诺后使用Promise.all调用createNewConversation
:
const promises = searchUser.map(item => getUser(item));
Promise.all(promises).then(result => {
result.forEach(({ name, id }) => {
createNewConversation(name, id);
});
});
推荐阅读
- bash - 对 package.json 中的 docker 镜像名称进行 Grep
- c# - Polly WaitAndRetry 与最终异常什么都不做
- spring - 如何使用 ThymLeaf 将实体分配给表单中的另一个实体?
- c# - CA1062 未在 .Net Standard 2.0 类库上进行评估
- java - 拒绝名称空间仅在文件扩展名(最后一个点之后的部分)上有所不同的 WSDL 是否合法?
- pyinstaller - 了解 pyinstaller
- c# - 使用 azure-libraries-for-net 在 azure 上的 docker 中执行命令
- mysql - 执行大型查询时 SQL Alchemy 超时
- x++ - 将字段“DocumentDate”设置为 PurchFormLetter
- r - “...参数 4 匹配多个形式参数” - 带有 plot3D 的 3D 曲面图