节点JS + AWS承诺触发两次

Man*_*uru 3 javascript amazon-web-services node.js aws-sdk

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)
})
Run Code Online (Sandbox Code Playgroud)

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

我应该低于

----->发送电子邮件

---->发送承诺

但我得到了

----->发送电子邮件

---->发送承诺

----->发送电子邮件

max*_*paj 9

看起来您提供了回调函数和使用promise方法.

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

您可以只使用promise方法:

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

或者您可以使用回调方法:

try {
    const data = await ses.sendEmail(params).promise();
    console.log('Email was sent')
} catch(err) {
    console.log('There was an error')
}
Run Code Online (Sandbox Code Playgroud)