在控制台中未定义
Undefined in console
我尝试为 nodemailer 制作单独的函数,并在 return.But 中期望布尔值 true 或 false 当邮件发送给用户时我在帐户中收到邮件,但在那之后 [=true 或 false =14=] 我得到的值是未定义的。
function nodeMailer(mailOptions){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) return false;
return true;
});
}
您未定义,因为 true
或 false
应该 return 您的 nodeMailer
函数而不是 transporter.sendMail
。
在这种情况下,您可以创建 Promise
来帮助您。
var nodeMailer = function(mailOptions) {
return new Promise(function(resolve, reject){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) reject(error);
resolve(info);
});
}
});
}
然后像下面这样调用你的承诺
nodeMailer(yourOptions).then(function(result) {
// handle success result here
return info;
})
.catch(function(err) {
// handle your error here
})
您可以阅读有关承诺的更多信息 here。当您需要控制异步流时,它们非常有用。
使用回调或 promise 试试这个。
我尝试为 nodemailer 制作单独的函数,并在 return.But 中期望布尔值 true 或 false 当邮件发送给用户时我在帐户中收到邮件,但在那之后 [=true 或 false =14=] 我得到的值是未定义的。
function nodeMailer(mailOptions){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) return false;
return true;
});
}
您未定义,因为 true
或 false
应该 return 您的 nodeMailer
函数而不是 transporter.sendMail
。
在这种情况下,您可以创建 Promise
来帮助您。
var nodeMailer = function(mailOptions) {
return new Promise(function(resolve, reject){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) reject(error);
resolve(info);
});
}
});
}
然后像下面这样调用你的承诺
nodeMailer(yourOptions).then(function(result) {
// handle success result here
return info;
})
.catch(function(err) {
// handle your error here
})
您可以阅读有关承诺的更多信息 here。当您需要控制异步流时,它们非常有用。
使用回调或 promise 试试这个。