node.js - 如何在nodejs中返回响应?
问题描述
我有以下代码:
exports.generateCo = async function(req,res,next){
//some code
return new Promise(function (resolve,reject){
if(err){
//some code
}
else{
//some code
let mail = await sendEmail.otp(val,mailid,sub);
console.log("mail -- ",mail);
}
})
}
In Another file:
exports.otp = async function(val,mailid,sub){
//some code
transporter.sendMail(options,(error,info) =>
if(error){
//error logs
respobj = {status: "err"};
}
else{
//success logs
respobj = {status: "success"};
}
return respobj;
}
在第一个文件中,我无法在“邮件”变量中获得响应。我得到“未定义”的价值。有人可以帮我吗?
解决方案
await
不会在承诺中起作用。
根据给定的代码,您不需要在 async 函数中定义新的 Promise。
如果你需要新的承诺,你不能在承诺回调中等待。您应该改为使用 then 格式。
sendEmail.otp(val,mailid,sub).then((mail) => {
console.log("mail -- ",mail);
})
此外,otp 函数有一个 callbck,所以它必须被包装在一个 Promise 中。
exports.otp = async function(val,mailid,sub) {
//some code
return new Promise((resolve, reject) = {
transporter.sendMail(options,(error,info) => {
if(error){
//error logs
respobj = {status: "err"};
} else {
//success logs
respobj = {status: "success"};
}
return resolve(respobj);
})
})
}
推荐阅读
- javascript - 如何使用来自对象的参数运行函数?
- mysql - 如何在 foreach 循环后向 powershell 添加 SQL 更新语句
- spring - 如何正确使用千分尺?
- javascript - Rxjs 过滤器和映射不返回任何东西
- node.js - 解决 Hyperledger Fabric 教程中的“提案响应不成功”错误
- python - 如何使用某些条件重新组合嵌套列表?
- sql - 表格视图功能很慢
- angular - 如何在 Angular 的 http 服务中添加错误页面重定向
- javascript - 如何将 Angular 2 Frontend Express JS 变量导出到 Angular 2 组件?
- c# - 在 asp.net core 中为 TempData 对象添加扩展方法