jQuery promise test
by Trae
HTML
<OL>
<LI>Fulfilled, fulfillment handler returns a value: simple functional transformation
<LI>Fulfilled, fulfillment handler throws an exception: getting data, and throwing an exception in response to it
<LI>Rejected, rejection handler returns a value: a catch clause got the error and handled it
<LI>Rejected, rejection handler throws an exception: a catch clause got the error and re-threw it (or a new one)
</OL>
<h3>scenario 1</h3>
<div id="scenario1"></div>
<h3>scenario 2</h3>
<div id="scenario2"></div>
<h3>scenario 3</h3>
<div id="scenario3"></div>
<h3>scenario 4</h3>
<div id="scenario4"></div>
JavaScript
var scenario1 = document.getElementById("scenario1"),
scenario2 = document.getElementById("scenario2"),
scenario3 = document.getElementById("scenario3"),
scenario4 = document.getElementById("scenario4");
window.onerror = function(err){
console.log(arguments);
alert("unhandled error: " + err);
return true;
};
function getPromise() {
var dfd = $.Deferred();
console.log("deferred created");
setTimeout(function(){
console.log("deferred resolved");
dfd.resolve("resolved");
}, 500);
return dfd.promise();
}
function getRejectedPromise() {
var dfd = $.Deferred();
console.log("deferred created");
setTimeout(function(){
console.log("deferred rejected");
dfd.reject("resolved");
}, 500);
return dfd.promise();
}
function getErrorPromise() {
var dfd = $.Deferred();
console.log("deferred created");
setTimeout(function(){
console.log("deferred error");
throw "error in promise";
}, 500);
return dfd.promise();
}
try
{
getPromise()
.then(function(){
scenario1.innerHTML += "resolve<br />";
return 1;
});
getPromise()
.then(function(){
scenario2.innerHTML += "error<br />";
throw "Not Implemented Exception";
})
.fail(function(error){
scenario2.innerHTML += "handling error:" + error + " <br />";
return true;
});
getRejectedPromise()
.then(undefined, function(){
scenario3.innerHTML += "handled rejection" + " <br />";
return "handled";
})
.then(function(value){
scenario3.innerHTML += "handle rejected passed value: " + value + " <br />";
});
getRejectedPromise()
.then(undefined, function(){
scenario4.innerHTML += "unhandled rejection" + " <br />";
throw "New Error";
});
getErrorPromise()
.then(function(){
console.log("success");
}, function(error){
scenario3.innerHTML += "5. unhandled error" + error + " <br />";
return true;
})
.fail(function(error){
scenario3.innerHTML +=...