等待不等待解决承诺

时间:2018-10-15 07:22:52

标签: javascript node.js asynchronous async-await

这是我的小twilio函数/类返回的诺言,我确实将其导入到另一个文件中。我在这里得到 err res 的承诺

class TwilioService {
  sendSms(to, message) {
    return this.twilio.sendMessage(sms,(err,res) => {
      return new Promise((resolve, reject) => {
        if (err) {
          console.log(err)
          return resolve(res)
        } else {
          console.log(res, 'ppppppppppppppppp')
          return reject(res)
        }
      })
    })
  }
}

现在这是我正在使用的函数。

但是,当我执行console.log(sendSms)时,即使从twilio函数返回promise,我也无法在控制台中定义它。我在这里做错了。

import Twilio from '../../services/twilio'
const twilio = new Twilio()
const handler = async(request, reply) => {
  try {
    const sendSms = await twilio.sendSms(`+91${mobile}`, `Welcome to App. User ${verificationCode} as your signup OTP.`)
    console.log(sendSms, 'oooooooooooooooo')
  } catch(err) {
    console.log(err)
  }
}

请帮助!!!谢谢

1 个答案:

答案 0 :(得分:7)

您目前正在返回回调,它可能不会返回Promise-切换顺序,返回Promise,当{ {1}}回调运行。另外请注意,如果没有sendMessage,则应该reject err,如果没有resolve,则reserr一起使用,相反:

class TwilioService {
  sendSms(to, message) {
    return new Promise((resolve, reject) => {               // switch these two lines
      return this.twilio.sendMessage(sms, (err, res) => {   // switch these two lines
        if (err) {
          console.log(err)
          return reject(res) // reject on error, don't resolve
        } else {
          console.log(res, 'ppppppppppppppppp')
          return resolve(res) // resolve when there's no error
        }
      })
    })
  }
}