簡體   English   中英

如何在返回新諾言的函數中使用另一個諾言?

[英]How to use another promise in a function which returns a new promise?

我開始學習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 });
});
  1. 我可以有條件地使用resolve嗎?
  2. 如果答案是否定的 ,那么正確的方法是什么?
  3. 另外,我是否在路由器中以正確的方式使用了Promise?

提前致謝!

由於dbConnection.find返回了一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM