特定のタスクを達成する方法を探しています。つまり、
jQuery.when.apply( null, promiseArray ).done(...)
に
when( promiseArray ).done(...)
ご存知かもしれませんが、.bind()
デフォルト引数のようなものを作成したり、かなり気の利いたことをしたりするのに慣れることができます。たとえば、常に呼び出す代わりに
var toStr = Object.prototype.toString;
// ...
toStr.call([]) // [object Array]
私たちはそれを次のように行うことができます
var toStr = Function.prototype.call.bind( Object.prototype.toString );
toStr([]) // [object Array]
これはかなりクールです (.bind()
このような呼び出しでパフォーマンスが低下したとしても、私はそれを知っており、認識しています)、jQuerys.when
呼び出しでは実際には達成できません。不明な量の promise オブジェクトを取得した場合、通常はそれらを配列にプッシュして、.when
上記の最初のコード スニペットのようにそれらを渡すことができるようにします。
私はこれまでこれをやっています:
var when = Function.prototype.apply.bind( $.when );
今、私たちは次のように行くことができます
when( null, promiseArray ).done(...)
null
これは機能しますが、毎回明示的に渡す必要もなくしたいと考えています。だから私は試しました
var when = Function.prototype.apply.bind( $.when.call.bind( null ) );
しかし、それは私に投げかけます:
"TypeError: Function.prototype.apply called on incompatible null"
私はこれにあまりにも長い間座っていて、もうまともに考えることができないと思います. 簡単な解決策があるように感じます。この問題を解決するために追加の関数を使用したくありません.bind()
。.
ここで完全な例を参照してください: http://jsfiddle.net/pp26L/