Consider the following code:
function wait(ms) {
var deferred = $.Deferred();
setTimeout(deferred.resolve, ms);
return deferred.promise();
}
var starter, promiseOne;
starter = $.Deferred();
promiseOne = starter.then(function () {
console.log("Calling promiseOne");
return wait(2000);
}).done(function () {
console.log('promiseOne done');
});
starter.resolve();
var now=new Date().getTime();
var stop=now+5000;
while (stop>new Date().getTime()){}
console.log('timeout finished');
By running it, I am getting the following results:
Calling promiseOne
timeout finished
promiseOne done
I was thinking that promise callbacks are sent to Event queue, so I was expecting these results:
timeout finished
Calling promiseOne
promiseOne done
If not sending to Event queue,I 'd expect:
Calling promiseOne
promiseOne done
timeout finished
Could someone explain to me why am I getting the first triad?
P.S. By replacing then with done, I am getting:
Calling promiseOne
promiseOne done
timeout finished