我開始學習JS中的Promises,並試圖用promise來取代我現有的回調邏輯。我寫了一個函數,它返回一個新的承諾,並且還使用數據庫實例的承諾來檢索數據。但是,我不確定我是否正確。這裏是代碼片段,如何在函數中使用另一個promise來返回新的promise?
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
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
條件? - 如果答案是否,什麼是正確的方法?
- 另外,我是否在路由器中以正確的方式使用承諾?
在此先感謝!
你有一個錯字:'resovle(結果)' – melpomene
@melpomene編輯 – PhaniMahesh
這是一種不期而至'決心(errorMessage.invalidUser())'。你可能想'拒絕(errorMessage.invalidUser())'。 – Danosaure