2

間違って使用しているかもしれませんが、3つの関数をチェーンし、2番目の関数は最初の関数が完了したときに開始し、3番目の関数は2番目の関数が完了したときに開始します。ドキュメントによると、私はこのようにそれを行うことができるはずです:

$.when( first() ).then( second() ).then(third() );

それらはすべて同時に実行されているようです。何が得られますか?

私のフィドル

私も試しました:

first().then( second() ).then(third() );

これは最初のdivでフェードインしますが、2番目と3番目ではフェードインしません。

4

3 に答える 3

3

あなたはそれらの機能の即時実行を強制しています。(ちなみに、JavaScriptはシングルスレッドであるため、同時に実行されるわけではありませんが、次々と非常に高速に実行されます。)

あなたは書く必要があり$.when(first).then(second).then(third)(最初は約束です)、ライブラリにそれらを実行させる必要があります。それらを自分で実行しないでください(これは、parensが行うことです)。

編集:ああ、フィドルを見ませんでした。ええ、ショーンジョンソンが言ったこと。

于 2013-03-25T01:22:21.003 に答える
1

うまくfirst(); second(); third();動作します。JavaScriptはシングルスレッドです。

との使用はwhen、 ajaxリクエストなどthen、統合するもののためのものですPromise(少なくとも、jQuery以外のユーザーとしての私の理解です)

編集:これがCSSのみを使用して作り直されたjsFiddleです^ _ ^

于 2013-03-25T01:15:52.737 に答える
0

アニメーションがJSFiddleを完了した後に各機能を実行する場合は、

使用する:

var first = function(callBack1, callBack2){
    $("#div1").fadeIn(2000, function(){callBack1(callBack2)});
}
var second = function(callBack){
  $("#div2").fadeIn(2000, callBack);

}

var third = function(){
  $("#div3").fadeIn(2000);

}


first(second, third);
于 2013-03-25T01:32:15.097 に答える