javascript - 在已经解决添加的任何内容的同时动态添加承诺
问题描述
我有一个异步功能,可以说它sendEmail
向用户发送电子邮件。我的示例代码如下:
const sampleFunc = (users) => {
for (const user of users) {
// process user obj and get 'to', 'from', 'body'
sendEmail(to, from, body) // this is an async function
}
return // return only when all the emails are sent.
}
我想要的是仅在发送所有电子邮件后才返回。我可以通过添加await
before函数轻松地做到这一点,但随后我失去了异步行为,除非电子邮件是为当前用户发送的,否则sendEmail
我无法处理下一个对象。user
有没有一种方法可以在我添加时正在处理那些已经添加的实例时动态添加sendEmail
到数组之类的东西。Promise.all()
sendEmail
例如,如果users
数组中有 10 个用户并且当前我正在处理第 5 个user
,那么该sendEmail
函数已经为前 5 个用户工作,并且我正在动态添加用户。然后就在返回之前,我会等到 10 个用户的所有电子邮件都发送完毕,然后返回。
解决方案
sendEmail
返回时,Promise
您可以使用Promise.all
const sampleFunc = async (users) => {
const promises = []
for (const user of users) {
// process user obj and get 'to', 'from', 'body'
promises.push(sendEmail(to, from, body))
}
const result = await Promise.all(promises)
return // return only when all the emails are sent.
}
推荐阅读
- java - 当我将用户发送到另一个活动时,它会一次又一次地重新加载到无穷无尽的时间
- blogger - 如何将我的博主帖子的特色图片关联为我网站中的缩略图
- javascript - 如何让我的 Discord 机器人 (Javascript) 对用户提出的特定问题回答随机数?
- sql-server - 将两个对应的过滤 SQL 查询合并为一个
- javascript - 在 Fotorama - Magento 2 产品页面添加自定义视频
- javascript - 当两个子组件相同且父组件在条件上不同时如何反应渲染
- excel - 有条件地搜索单元格值VBA
- r - 将多个协变量的 GAM 平滑组合在 R 中的一个图中
- android - 出现“找不到目标文件”lib\main.dart“之类的错误。” 在颤振中构建 APK
- python - Sqlite3 - Python 中的参数化