在 `Then` 中调用相同的 promise

Call same promise inside `Then`

我想知道你是否可以像这样调用同一个 promise 两次

//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 函数 returns 是一个承诺。邮件通过nodemailer发送。

你在你的例子中所做的在技术上并不是两次调用同一个承诺。您正在调用同一个函数两次,sendMail。每次调用该函数时,它 return 都是一个新的承诺。

所以答案是肯定的,您可以多次调用该函数,即使它 return 是一个承诺,因为它每次都会 return 一个新的承诺。