私はjQueryの遅延オブジェクトを読んでいます。誰も2つの呼び出し方法の違いは何ですか?例
$.when.apply(null, a method).done(function(){success callback})
$.when.(a method).done(function(){success callback})
そして、何種類以上の第一の方法に適していますか?
ありがとうございます。 方法が実際に配列または配列を返すメソッドの呼び出しある場合
私はjQueryの遅延オブジェクトを読んでいます。誰も2つの呼び出し方法の違いは何ですか?例
$.when.apply(null, a method).done(function(){success callback})
$.when.(a method).done(function(){success callback})
そして、何種類以上の第一の方法に適していますか?
ありがとうございます。 方法が実際に配列または配列を返すメソッドの呼び出しある場合
$.when.apply(null, a method)
にのみ意味があります。それは$.when(elements, of, the, array)
のようです。 apply
メソッドの詳細については、See MDNを参照してください。
$.when.(a method)
はまったく意味がありませんが、私は$.when(a method)
を意味すると思います。この場合、のメソッドは、のメソッドを返す必要があります。これは、遅延オブジェクトまたは遅延オブジェクトを指す変数を返します。
$.when()
の構文は$.when(one, or, more, deferreds)
である - ので、あなたがアレイに含まれる複数のDeferredを渡したい場合は、文字列としてメソッド呼び出しを構築し、実際にである(eval
を使用したくないので、あなたが.apply()
を必要としますこの場合、悪い)。
一部のリモート呼び出し(ajax)の応答後にコードを実行するためにDeferredが作成されました。
あなたが持っている可能性がありそう:
load_conf = function (user_id) {
var def = $.Deferred()
$("http://get_conf_data_url?user_id="+user_id).done(function (data) {
var processed_conf = do_something_with(data);
def.resolve(processed_conf);
})
return def.promise();
}
をので、あなたが行くことができる:
load_conf(1).done(function (processed_data) {
do_something_with(processed_data);
});
exacly 3コンフィギュレーションをロードした後、いくつかのコードを実行することについては何? Nは可変であるNコンフィギュレーションをロードした後、いくつかのコードを実行について
$.when(load_conf(1), load_conf(2), load_conf(3)).done(function (c1, c2 ,c3) {
console.log("configurations: ", c1, c2, c3);
})
しかし、どのような: あなたのような何かをするだろうか? この場合、Function.prptotype.applyメソッドを使用できます。 関数内で "this"として扱われるオブジェクトを第1引数として渡すことができます。 2番目の引数はパラメータのリストですが、配列内にあります。
ので、あなたはこのように行くことができます:
var defs = [];
for (var i=1; i<=N; i++) {
defs.push(load_conf(i));
}
// here's the magic
$.when($,defs).done(function() {
console.log("All conf loaded: ", arguments);
// arguments contains N processed answers
});
参照[MDN: 'fun.apply()'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/適用)&[Eloquent JavaScript](http://eloquentjavascript.net/chapter6.html#key5) – gnarf
+1の$ .when.apply(null、メソッド) – marverix