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)
})
有人可以帮助我上面的代码承诺被触发两次。
我应该在下面
----->发送电子邮件
---->发送承诺
但我得到了
----->发送电子邮件
---->发送承诺
----->发送电子邮件
答案 0 :(得分:7)
看起来您正在提供回调函数和使用promise方法。实际上,这意味着您有两个不同的函数在请求完成时执行。
您可以使用承诺方法:
ses.sendEmail(params).promise().then((data) => {
console.log('Email was sent')
}).catch((err) => {
console.log('There was an error')
})
使用async / await。请务必在函数标题中添加async
关键字。
try {
const data = await ses.sendEmail(params).promise();
console.log('Email was sent')
} catch(err) {
console.log('There was an error')
}
或者您可以使用回调方法:
ses.sendEmail(params, function(err, data) {
if (err) {
console.log('There was an error')
return
}
console.log('Email was sent')
})