1

私のjQueryアプリケーションでは、遅延ロードを実装したいと思います。したがって、すべてのjqXHRプロミスを含むオブジェクトを作成します。

私が今すべてをステートメントにグループ化するとき

var resultset = new Object();
resultset.one = $.getScript('http://......');
resultset.two = $.getScript('http://......');

$.when(resultset.one,resultset.two).then(
function(){ alert('success')},
function(){alert('failure')}
);

その後、常にエラー状態になります。理由はわかりません。jsデバッガーが指示するため、すべてのリクエストが正常です(ステータス200)。

JQ APIドキュメントには、次のことが機能することが記載されています。

$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  .then(myFunc, myFailure);

何か案は?

4

3 に答える 3

2

次のように、getScript() で promise を使用して、すべてのスクリプトが読み込まれるまで待つことができます。

$.when(
    $.getScript( "/mypath/myscript1.js" ),
    $.getScript( "/mypath/myscript2.js" ),
    $.getScript( "/mypath/myscript3.js" )
).done(function(){

    //place your code here, the scripts are all loaded

});
于 2013-03-06T14:11:44.397 に答える
1

理由は次のとおりです。

の構文$.when()$.when(one, or, more, deferreds)- したがって、配列内にある複数の deferred を渡したい場合は、メソッド呼び出しを文字列として構築して使用したくないため、.apply() が必要です (この場合evalは実際にです)。 .

jQueryの$.when.apply(null、メソッド)の意味は何ですか?

于 2013-03-06T14:19:25.800 に答える
0

さて、次の回避策を使用して動作させました。->違いを説明してもらえますか?

$ .when.apply($、(resultset.one、resultset.two))。then(...);

于 2013-03-06T14:12:45.807 に答える