相关疑难解决方法(0)

什么时候.then(成功,失败)被认为是承诺的反模式?

我看了一下bluebird promise FAQ,其中提到了这.then(success, fail)是一个反模式.我不太了解它对try和catch的解释.以下是什么问题?

some_promise_call()
.then(function(res) { logger.log(res) }, function(err) { logger.log(err) })
Run Code Online (Sandbox Code Playgroud)

似乎这个例子建议以下是正确的方法.

some_promise_call()
.then(function(res) { logger.log(res) })
.catch(function(err) { logger.log(err) })
Run Code Online (Sandbox Code Playgroud)

有什么不同?

javascript node.js promise bluebird

167
推荐指数
3
解决办法
2万
查看次数

每个then()应该在使用Promises时返回一个值或throw

在我从请求返回之前,我需要等待完成的一些异步方法.我正在使用Promises,但我一直收到错误:

Each then() should return a value or throw // promise/always-return
Run Code Online (Sandbox Code Playgroud)

这为什么开心呢?这是我的代码:

router.get('/account', function(req, res) {
  var id = req.user.uid
  var myProfile = {}
  var profilePromise = new Promise(function(resolve, reject) {
    var userRef = firebase.db.collection('users').doc(id)
    userRef.get()
      .then(doc => { // Error occurs on this line
        if (doc.exists) {
          var profile = doc.data()
          profile.id = doc.id
          myProfile = profile
          resolve()
        } else {
          reject(Error("Profile doesn't exist"))
        }
      })
      .catch(error => {
        reject(error)
      })
  })
  // More promises further on, which I …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

javascript ×2

node.js ×2

bluebird ×1

promise ×1