JSDeferredというよりもJavaScriptの理解において避けては通れないsetTimeoutを理解してみる。
setTimeout("alert('three')",3000); alert('one'); setTimeout("alert('two')",1000);
setTimeoutはあくまでイベントドリブン。
「クリック」とか「マウスオーバー」といったイベントではなく、「1秒後」とか「3秒後」といったイベント。
イベントはイベント。
ただ、JavaScriptはシングルスレッドなので同時にイベントが発火することはないっぽい。
また、上のコードでoneのアラートをすぐクリックしたらone -> two -> threeの順だけれども、oneのアラートでしばらく待ってクリックしたらone -> three -> twoの順。これもシングルスレッドだから(alert('one')で処理が止まっている)。
内部的にはキューか何かに呼び出す関数が貯まっているようなイメージ?
んでもって時間が来たら呼び出されるような。
もう少し理解が必要。