未处理的承诺拒绝警告(尽管有catch块)

时间:2018-10-18 23:20:06

标签: node.js bluebird

我似乎有一个用于处理承诺拒绝的链式捕获块(并且确实可以捕获拒绝),但是我仍然看到有关未处理的承诺拒绝的警告。我在这里不明白吗?

Promise.resolve(req.query.request_token)
.then(function(rt) {
  request_token = rt+'2'
  return kc.generateSession(request_token, api_secret)
})
.then(function(resp) {
  console.log(resp)
  return kc.setAccessToken(resp.access_token)
})
.then(() => console.log(kc))
.catch(err => console.error(err))

1 个答案:

答案 0 :(得分:0)

因此,我尝试重新创建此示例,并查看您的Promise链是否存在问题,但我认为这不是因为我的以下示例可以正常工作,即:我尝试抛出错误并拒绝每个模拟函数,但是无论我在模拟函数中做什么,“这种情况在这里”仍然会打印出来。

function testResolve() {
  return new Promise((res, rej) => res(1))
}

function generateSession(a, b) {
  return new Promise((res, rej) => {
    console.log(a)
    console.log(b)
    res(`a: ${a}, b: ${b}`)
  })
}

function setAccessToken(token) {
  return new Promise((res, rej) => {
    res(1)
  })
}

Promise.resolve(testResolve())
.then(function(rt) {
  var request_token = rt+'2'
  return generateSession(request_token, 'a1')
})
.then(function(resp) {
  console.log(resp)
  return setAccessToken(resp.access_token)
})
.then(() => console.log(x))
.catch(err => {
  console.log('this happens here')
  console.error(err)
})

我将检查未处理的Promise拒绝消息,查看它给您的行号,并查看发生错误的文件名。在其他地方的代码中可能存在未处理的拒绝,因为据我所知,这个promise链应该捕获链中任何地方发生的任何错误。