jQuery.when でも 配列を引数に取りたい
Promise.all みたいに!
でも jQuery.when の引数は一つまたはそれ以上のDeferredオブジェクト。
引数はカンマ区切りで指定されるものであって、配列ではない……。
というのは、Function.prototype.call と Function.prototype.apply の関係に似ています。
apply は配列形式の引数を用いて関数を呼び出すメソッドです。これを使います。
$.when.apply($, deferredArray);
使ってみる
var dataArray = [1,2,3]; var deferredArray = dataArray.map(function produceNewArray (data) { return $.post(url, data, success, dataType); }); $.when.apply($, deferredArray).then(function doneFilter () { // resolved }, function failFilter () { // failed });
やりやがりましたね!