I am new to Javascript and need a clarification about using catch() in a Promise Chain. I have read multiple articles that simply state that a catch() at the end of a promise chain will handle an error from any of the .then() calls preceding it. I have also read that a .then(function(result)) will not be called if invoked on a rejected promise. So I can't understand how catch() at the end of a promise chain can catch an error without each .then() in between returning a rejected promise one after the another until it reached the .catch() part of it.
I wrote a piece of code that leads me to think that after an error is thrown from a .then(), each interim .then() then returns a rejected promise until it reaches the catch() part of the promise chain. I would like to know if I am getting this picture accurately.
<!DOCTYPE html>
<script>
"use strict";
let promise = new Promise(function(resolve, reject) {
resolve("promise result");
})
// then1 holds a rejected promise
let then1 = promise.then(function(result) {
alert("inside then1");
return new Promise((resolve, reject) => {
reject(new Error("hi error"));
});
})
// The alert never displays so undertandably function(result) is not invoked
let then2 = then1.then(function(result) {
alert("inside then2");
})
// then2.then() works leading me to believe then1.then() above did return a rejected promise
then2.then(function(result){
alert("inside then2_result");
alert(result);
}, function(error){
alert("inside then2_error");
alert(error);
});
</script>
Via Active questions tagged javascript - Stack Overflow https://ift.tt/s9FjxnQ
Comments
Post a Comment