[英]How to use another promise in a function which returns a new promise?
I started learning Promises in JS and I am trying to replace my existing callback logic using promises. 我开始学习JS中的Promises,并尝试使用Promise替换现有的回调逻辑。 I wrote a function which returns a new promise, and also uses a promise of a database instance to retrieve the data. 我编写了一个函数,该函数返回一个新的Promise,并且还使用数据库实例的Promise来检索数据。 However, i am not sure if i am doing it right. 但是,我不确定我是否做对了。 Here is the code snippet, 这是代码片段,
usersService.js usersService.js
var getUsers = function(queryObject) {
return new Promise(function(resolve, reject) {
dbConnection.find(queryObject)
.then(function(result) {
if (result.length > 0) {
resolve(result)
} else {
resolve(errorMessage.invalidUser())
}).catch(function(err) {
reject(err)
});
})
};
usersRouter.js usersRouter.js
router.get('/users', function (req,res,next) {
var queryObject = { "userId":req.query.userId };
userService.getUsers(queryObject)
.then(function (data) { //some logic })
.catch(function (err) { //some logic });
});
resolve
conditionally ? 我可以有条件地使用resolve
吗? Thanks in advance! 提前致谢!
Since dbConnection.find returns a promise, you can return it directly and choose what will be pass when you will resolve it. 由于dbConnection.find返回了一个Promise,因此您可以直接将其返回,并选择解决它时将传递的内容。 No need to wrap it inside an other promise. 无需将其包装在其他承诺中。
var getUsers = function (queryObject) {
return dbConnection.find(queryObject).then(function (result) {
if (result.length > 0) {
return result
} else {
return errorMessage.invalidUser()
}
})
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.