パンプキンスパイスラテ

IT系のことが多めの日記帳です

JSDeferredの動作について

なんかFirefox3.08で試すと他のブラウザと挙動が異なる。
以下コード。

<script type="text/javascript">
//<![CDATA[

Deferred.define();

next(function () {
    alert("1");
}).
next(function () {
    alert("2");
    // child Deferred
    return next(function () {
        alert("3");
    });
}).
next(function () {
    alert("4");
});
alert("0");

//]]>
</script>

Firefox3.08

1,2,3,4,0 の順に表示される。

IE7、IE6(MultipleIEs)

0,1,2,3,4 の順に表示される。

Win Safari3.2.1

0,1,2,3,4 の順に表示される。

Google Chrome1.0.154.53

0,1,2,3,4 の順に表示される。

Opera9.64

0,1,2,3,4 の順に表示される。


なんでかな!?

追記

同僚に教えてもらった。
JSDeferredの内部で使用している、setTimeoutが影響しているそうな。
今度調べてみる。