если в какой-то момент в цепочке обещаний выдается ошибка, автоматически ли она распространяется по всей цепочке? - PullRequest
0 голосов
/ 01 мая 2020

Скажем, у вас есть цепочка обещаний, подобная этой:

asyncFunction()
.then((value) => {
    resolve(value)
})
.then((value) => {
    resolve(value)
})
.then((value) => {
    resolve(value)
})
.catch((error) => {
    reject(error)
})

Если во время одного из этих вызовов функции выдается ошибка, автоматически ли эта ошибка распространяется вплоть до catch в конце цепи? Скажем, ошибка выдается в начале, во время asyncFunction(), какова точная механика ее распространения? Ошибка передается в обработчик каждого then? Или каждый затем ищет второй обработчик, а не видит один, и поэтому передает ошибку следующему then?

1 Ответ

1 голос
/ 01 мая 2020

Да, он будет распространяться вниз, пока не достигнет первого catch. Все предложения then должны быть пропущены.

Я заметил, что использование resolve() и reject() позволяет избежать этого, в этом случае нет необходимости использовать шаблон конструктора Promise.

...