I'm trying to grasp the concept of javascript promise. But I'm getting some problems. I set up a very small web service locally(don't get angry, the web service does not conform to conventions). Here some details about it
/login/<username>/<password>
==> login into the system, the correct username and password is both noor
if user is login, a call can be made on /car/<brand>/<color>/<plate_number>
,
I'm not performing any validation on the type of color,brand,platenumber
This one works perfectly fine, I'm logging and adding a car
$.ajax({type: "GET",url: url+"/login/noor/noor"})
.then(function( data, textStatus, jqXHR ) {console.log("login success");},function(){console.log("login error");})
.then($.ajax({type: "GET",url: url+"/car/1/1/1"}))
.then(function(){console.log("car added");},function(){console.log("car not added");});
This one perfectly shows an error because an invalid url is used:
$.ajax({type: "GET",url: url+"/carasdsad/1/1/1"})
.then(function(){console.log("car added");},function(){console.log("car not added");});
"/carasdsad/1/1/1" is an invalid url and car not added is returned
I'm getting a problem with this one. The code below uses the code just above. I was expecting car not added to be shown but its showing car added
$.ajax({type: "GET",url: url+"/login/noor/noor"})
.then(function( data, textStatus, jqXHR ) {console.log("login success");},function(){console.log("login error");})
.then($.ajax({type: "GET",url: url+"/carasdsad/1/1/1"}))
.then(function(){console.log("car added");},function(){console.log("car not added");});
The above code is returning car added although "/carasdsad/1/1/1" is an invalid url in the second call.
According to spec, non-function argument is ignored in then
method.
Your code reduced to minimal case looks like that:
Promise.resolve(true)
.then(Promise.reject("some err"))
.catch(console.log.bind(console, "fail"));
And one need to rewrite it this way in order to catch errors:
Promise.resolve(true)
.then(function(){ return Promise.reject("some err") })
.catch(console.log.bind(console, "fail"));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With