необработанное предупреждение об отказе от обещания (несмотря на наличие блока catch) - PullRequest
0 голосов
/ 19 октября 2018

Кажется, у меня есть цепочка захвата для обработки отклонения обещания (и она действительно исправляет отклонение), но я все еще вижу предупреждение о необработанном отклонении обещания.Что я тут не понял?

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 голосов
/ 19 октября 2018

Итак, я попытался воссоздать этот пример и посмотреть, если что-то не так с вашей цепочкой обещаний, но я не думаю, что это так, потому что мой пример ниже работает нормально, то есть: я пытался выбрасывать ошибки и отклонять каждый из макетовфункций, но независимо от того, что я делаю в фиктивных функциях, «это происходит здесь» все еще печатается.

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)
})

Я бы проверил сообщение об отказе от необработанного обещания и увидел бы номер строки, который он вам дал, ипосмотрите на имя файла, где произошла ошибка.Возможно, что где-то еще был необработанный отказ внутри кода, потому что, насколько я знаю, эта цепочка обещаний должна отлавливать любые ошибки, которые происходят где-нибудь в цепочке.

...