节点JS + AWS承诺两次触发

AWS = require('aws-sdk'); AWS.config.region = 'eu-west-1'; ses = new AWS.SES(); var params = {}; return ses.sendEmail(params, function (err, data) { console.log('----->sending email') }).promise().then((data) => { console.log('---->sending promise') }).catch((err) => { console.log('----->am in error') console.log(err) }) 

有人可以帮我上面的代码承诺触发两次。

我应该得到下面

—–>发送电子邮件

—->发送诺言

但是我得到了

—–>发送电子邮件

—->发送诺言

—–>发送电子邮件

看起来你提供了一个callback函数和使用承诺的方法。

实际上,这意味着您有两个不同的function在请求完成时执行。

您可以只使用承诺方式:

 ses.sendEmail(params).promise().then((data) => { console.log('Email was sent') }).catch((err) => { console.log('There was an error') }) 

或者你可以使用callback方法:

 ses.sendEmail(params, function(err, data) { if (err) { console.log('There was an error') return } console.log('Email was sent') })