javascript - 具有多个值的 Promise.map
问题描述
我有以下代码:
Promise.map(myValues, async myValue => {
const owner = await findOwner(myValue);
return sendMessage(owner);
})
现在我想了解如果我想为每个值发送两条消息,我该如何完成同样的事情:
Promise.map(myValues, async myValue => {
const owner = await findOwner(myValue);
/* I want both sendMessage and senMessageSpecific(owner) to happen but map expects just one return. How do I deal with this situation? */
sendMessage(owner);
sendMessageSpecific(owner);
})
如果在地图中我希望能够返回多个承诺(在某些情况下),语法是什么?现在它显然不起作用,因为我做了一个回报,所以它永远不会进入第二个承诺。
解决方案
我假设您的两个消息函数返回承诺,并且您希望 map 等待两者。在这种情况下,您可以将它们包装在Promise.all
. 像这样:
Promise.map(myValues, async myValue => {
const owner = await findOwner(myValue);
return Promise.all([sendMessage(owner), sendMessageSpecific(owner)]);
})
或者,如果您不关心返回值,您可以像使用findOwner
. 像这样:
Promise.map(myValues, async myValue => {
const owner = await findOwner(myValue);
await sendMessage(owner);
await sendMessageSpecific(owner);
})
这两种功能都会发生。不同之处在于,在第一种情况下,它们将并行发生,而在最后一种情况下,它们将一个接一个地发生。
推荐阅读
- github - GitHub - 许可证无法识别
- python - 使用 python pandas 将表格从 web 抓取到 excel,将数字作为文本存储在 excel 中。如何存储为价值?
- python - 对python中的包和环境的一般理解
- python - 为什么我会收到 SyntaxError?
- c++ - 应该多久调用一次 MPI_Test 以在后台进行 MPI_Isend/MPI_Irecv 调用?
- javascript - 如何使用属性从 javascript 获取表的同一行中 td 元素的类的名称
- regex - 在大量文件中查找和替换模式
- java - 使用 HashMap 问题在存储库中实现缓存
- jupyter-notebook - 在 Jupyter 中散景导入 json_item 序列化 JSON
- javascript - 打字稿:缩小映射类型不适用于泛型