This happens because you do not attach a catch handler to the promise returned by the first then
method, which therefore is without handler for when the promise rejects. You do have one for the promise p
in the last line, but not for the chained promise, returned by the then
method, in the line before it.
As you correctly added in comments below, when a catch handler is not provided (or it's not a function), the default one will throw the error. Within a promise chain this error can be caught down the line with a catch
method callback, but if none is there, the JavaScript engine will deal with the error like with any other uncaught error, and apply the default handler in such circumstances, which results in the output you see in the console.
To avoid this, chain the .catch
method to the promise returned by the first then
, like this:
p.then( result => console.log('Fulfilled'))
.catch( error => console.log(error) );
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…