私は、特定のタスクを達成するための方法を探していますし、それは.bind使用.applyは.call()と()の回避()
when(promiseArray).done(...)
に
jQuery.when.apply(null, promiseArray).done(...)
行くから、あります
ご存知のように、.bind()
は、デフォルトの引数のようなものを作成したり、かなり面白いものを作成したりすることができます。たとえば、代わりに常にこれは、(このような.bind()
を呼び出すパフォーマンスpenalityがあっても、私はそれを知っていると私はかなりクールです
var toStr = Function.prototype.call.bind(Object.prototype.toString);
toStr([]) // [object Array]
のように、我々はそれを行うことができます
var toStr = Object.prototype.toString;
// ...
toStr.call([]) // [object Array]
を呼び出しますそれを意識して)、私は実際にjQuerys .when
コールのためにそれを達成することはできません。未知の量の約束オブジェクトがある場合は、それらを通常配列にプッシュし、それらを上記の最初のコードスニペットのように.when
に渡せるようにします。私はこれまでのところ、これをやっている
:今、私たちは
when(null, promiseArray).done(...)
のように行くことができます
var when = Function.prototype.apply.bind($.when);
これは動作しますが、私はまた、明示的にすべてのnull
に合格する必要を取り除きたいです時間。だから私は
var when = Function.prototype.apply.bind($.when.call.bind(null));
を試してみましたが、それは私にスロー:
"TypeError: Function.prototype.apply called on incompatible null"
私は今、あまりにも長い間、この上に座ってると思うともうストレート考えることはできません。それは簡単な解決策があるように感じる。 私はこの問題を解決するために追加機能を使用したくないので、私は絶対に.bind()
を使って解決策を選ぶことを勧めます。 http://jsfiddle.net/pp26L/
'.bind($ .when、ヌル)'
これを行いますか? – Raynos
@レイノス:ええ、私の負傷した自我に塩をこする。:p – jAndy