Попробуйте этот кусок кода на консоли вкладке Chrome или FirefoxКак работает «улов» в собственной цепочке обещаний?
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
reject(10);
}, 1000)
})
p.then(function(res) { console.log(1, 'succ', res) })
.catch(function(res) { console.log(1, 'err', res) })
.then(function(res) { console.log(2, 'succ', res) })
.catch(function(res) { console.log(2, 'err', res) })
Результат будет
1 "err" 10
2 "res" undefined
я пробовал много других примеров, но мне кажется, что первый then()
возвращает обещание, что всегда решает и никогда не отвергает. Я пробовал это на Chrome 46.0.2490.86 и Firefox 42.0. Почему это происходит? Я думал, что then()
и catch()
могут быть цепями несколько раз?
Возможный дубликат [Цепные обещания, не проходящие при отказе] (http://stackoverflow.com/q/16371129/1048572) – Bergi