Prova questo pezzo di codice sulla scheda Console di Chrome o FirefoxCome funziona il "catch" in una catena nativa Promise?
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) })
Il risultato sarà
1 "err" 10
2 "res" undefined
che ho provato molti altri esempi, ma sembra che il primo then()
restituisce una promessa che risolve sempre e non rifiuta mai. Ho provato questo su Chrome 46.0.2490.86 e Firefox 42.0. Perché succede? Ho pensato che then()
e catch()
possono essere concatenati più volte?
possibile duplicato di [Promesse concatenate che non passano al rifiuto] (http://stackoverflow.com/q/16371129/1048572) – Bergi