【发布时间】:2021-05-06 07:45:14
【问题描述】:
我目前正在做一个小项目,遇到了这个问题。
这是我正在做的事情的一个小背景。首先,我使用Axios 同时调用 API,如下所示:
const [...result] = await Promise.all([
axios.post('api-url', data, headers),
axios.post('api-url', data, headers),
axios.post('api-url', data, headers),
axios.post('api-url', data, headers),
])
然后我映射结果数组并返回一组对象,如下所示:
//data array
const data = [{name: 'john'}, {name: 'jane'}, {name: 'doe}]
根据上面列出的数据数组,我像这样在我的 MongoDB 集合中创建新用户。
const result = data.map(async (item) => {
return Promise.all([
User.create({ name: item.name, }),
])
})
现在,问题来了 - 当我执行 console.log(result) 时,我得到了一系列未解决的承诺,例如:
result [
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> }
]
我不知道这里发生了什么。据我了解,Promise.all() 旨在返回一系列已解决的承诺。我可能做错了什么?我该如何解决这个问题?任何帮助表示赞赏。非常感谢。
【问题讨论】:
-
如果你能得到 200 状态的消息,那么只需运行一个队列,推送项目,然后 async/await 在返回 200 时通过函数调用队列中的下一个项目...跨度>
标签: javascript node.js mongodb promise axios