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 +=...