我似乎有一个用于处理承诺拒绝的链式捕获块(并且确实可以捕获拒绝),但是我仍然看到有关未处理的承诺拒绝的警告。我在这里不明白吗?
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))
答案 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链应该捕获链中任何地方发生的任何错误。