Playing with Promises then done

by Fernando De Leon

HTML

<p>
Here are the results when using promise in non sequential form:
</p>
<div id="resultsAsyncCall">

</div>

<p>Here are the resutls when using promise in a sequential form (should take 3 secs look at the func methods)</p>
<div id="resultsSyncCall">
</div>
<div id="progressReport">
</div>
<div id="progressReport2">
</div>
<div id="progressReport3">
</div>
<hr/>
<button id="press">
Press to begin execution
</button>
<div>
Results for exec1: <span id="exec1Results"></span><br/>
Results for exec2: <span id="exec2Results"></span>
</div>
<div id="waitResults"/>
<hr/>
<button id="press2">
Press to begin execution
</button>
<button id="press3">
Press and watch console
</button>
<div>
Results for exec1: <span id="exec1Results2"></span><br/>
Results for exec2: <span id="exec2Results2"></span>
</div>
<div id="waitResults2"/>

CSS

.answer {
  color:red;
}

JavaScript

var countUpTimer;
var countUp_number = -10;

function func1() {
  var dfd = $.Deferred();
  dfd.notify("In the func1...");
  setTimeout(function() {
     var d = new Date();
     dfd.notify("processing...");
     console.log("about to resolve! "+d.getTime());
     var message = {
      txt:"Password"
     };
     dfd.notify("done!... for func1!!");
     
    dfd.resolve(message);
  }, 1000);

  return dfd;
}

function func2(message) {
 var d = new Date();
  console.log("about to resolve! "+d.getTime());
  var dfd = $.Deferred();
  dfd.notify("in the func2..");

  setTimeout(function() {
   dfd.notify("processing...");
    if (message.txt == 'Password') {
      message.name = "Nando";
       dfd.notify("done!... for func21!!");
      dfd.resolve(message);
    }
   }, 1000);

  return dfd;
}

function func3(message) {
  var d = new Date();
     console.log("about to resolve! "+d.getTime());
  var dfd = $.Deferred();
  dfd.notify("in func3");

  setTimeout(function() {
    dfd.notify("processing...");
    if (message.name == 'Nando') {
      message.isActive = true;
      dfd.notify("done!... for func31!!");
      dfd.resolve(message);
    }
   }, 1000);

  return dfd;

}

function nonSeqFunc1(val) {
 var defer = $.Deferred();
 defer.resolve(val);
 return defer.promise();
}

function nonSeqFunc2(val) {
 var defer = $.Deferred();
 defer.resolve(val);
 return defer.promise();
}

function nonSeqFunc3(val) {
 var defer = $.Deferred();
 defer.resolve(val);
 return defer.promise();
}

var pro1 = nonSeqFunc1(2);
var pro2 = nonSeqFunc1(3);
var pro3 = nonSeqFunc1(5);
$.when(pro1,pro2,pro3).done(function (result1, result2,result3) {
   var total = result1 + result2 + result3;
  $("#resultsAsyncCall").html("<span class='answer'>"+total+"</span>");

});



var df1 = func1();
df1.progress(function(progress) {
 $("#progressReport").html("Progres: "+progress);
});
var df2 = func2();

df2.progress(function(progress) {
 $("#progressReport2").html("Progres: "+progress);
});

var df3...