我是 Express 框架和学习的新手,在使用 .then
时遇到问题。问题是我有两个函数,我希望第一个函数在第二个函数开始执行之前完成。我正在导出模块。
var ubm = require('./userBasic');
有两个函数setUserData
和showUserId
,showUserId
必须在setUserData执行完操作后才执行。
var userId = ubm.setUserData(userName,userEmail,userDOB,moment);
userId.then(ubm.showUserId(userId));
下面是两个函数:
module.exports = {
setUserData: function (userName,userEmail,userDOB,moment){
//Performing database activities
return userId;
}
showUserId: function (userId){
console.log(userId);
}
}
当我运行时,它显示TypeError:无法读取未定义的属性“then”
。
就像我说的,我是个新手,正在学习,无法找出解决方案。我做了一些谷歌搜索并得到了关于promise
的简介,但我不知道如何在这里实现。
最佳答案
尝试使用 promise
module.exports = {
setUserData: function(userName, userEmail, userDOB, moment) {
return new Promise(function(resolve, reject) {
//db stuff
reject(error);
resolve(userId);
});
},
showUserId: function(userId) {
console.log(userId);
};
};
所以在你的执行中你会写
ubm.setUserData(username, usereEmail, userDOB, moment)
.then((data) => {
showUserId(data);
})
.catch((err) => {
console.log(err);
});
需要注意的一些事情是,在这种情况下,您可以只记录数据,而不需要像这样的其他功能
ubm.setUserData(username, usereEmail, userDOB, moment)
.then((data) => {
console.log(data);
})
.catch((err) => {
console.log(err);
});
无论您传递给resolve()的任何值都将被返回,以及您将错误传递给reject()。
关于node.js - 无法在express框架中使用.then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907405/