javascript - 在 `Then` 中调用相同的承诺
问题描述
我想知道你是否可以像这样两次调用同一个承诺
//receiver is sent if the mail should be sent to someone else and will have a
//different email boy
const body = (req.body.receiver) === undefined ? 'regular mail': 'admin email body'
//the sendEmail Function takes to, from and body arguments
await sendEmail(req.body.requestedBy, someEmailAddress, body)
.then(info => {
console.log(info)
//a mail should be sent only to requester if req.body.receiver is present in the request
if (req.body.receiver) {
await sendEmail(req.body.receiver, someEmailAddress, body)
.then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
})
}
return res.send(data)
})
.catch(err => {
console.log('Error:', err)
})
当然,这将被包装在一个异步函数中,因为我创建的 sendMail 函数返回一个承诺。邮件通过 nodemailer 发送。
解决方案
您在示例中所做的在技术上并不是两次调用相同的承诺。您两次调用相同的函数,sendMail
. 每次调用该函数时,它都会返回一个新的 Promise。
所以答案是肯定的,即使它返回一个 Promise,你也可以多次调用该函数,因为它每次都会返回一个新的 Promise。
推荐阅读
- java - 想法插件 jprofiler com.jprofiler.integrations.idea.graph.n.daemonCancelEventOccurred(Ljava/lang
- html - SVG 中的居中背景图像
- dialogflow-es - 轮播内的链接
- python - 计算序列的第 n 个元素的脚本
- python - Pandas - 如何创建一个新列,该列从前一行或下一行(如果第一行)的列中获取值
- php - 你如何从 Laravel 6 的雄辩关系中返回单列?
- c++ - strcmp 无法将参数 '2' 的 'char**' 转换为 'const char*' 到 'int strcmp(const char*, const char*)'
- python - 如何使用烧瓶在表单中添加默认值?
- node.js - 错误:错误:04099079:rsa 例程:RSA_padding_check_PKCS1_OAEP_mgf1:oaep 解码错误
- botframework - OAuth 登录按钮在 Teams 上不起作用