我有一个延迟对象数组,我怎么能用jQuery.when呢?它不需要数组

Hca*_*tek 2 javascript jquery jquery-deferred

var promises = [promise1, promise2, promise3... promiseN];
Run Code Online (Sandbox Code Playgroud)

我该怎么用?

$.when(promise1(), promise2(), promise3(), ...promiseN()).then(function(){ doSomething()});
Run Code Online (Sandbox Code Playgroud)

我宁愿传递数组......任何想法我怎么能正确地做到这一点?显然这不起作用.

 $.when(promises).then(function(){ doSomething()});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,失败,总是都接受数组.

谢谢,〜ck

Lep*_*eus 7

我不熟悉$ .when()但你应该能够使用javascript函数apply()做你想做的事.有点像:

$.when.apply($, promises).then(function(){ doSomething()});
Run Code Online (Sandbox Code Playgroud)

第一个参数是在函数调用中绑定到"this"的内容(类似于$ .proxy()在jquery中的作用),第二个参数是传递给函数的参数数组.

例如:

myobj.myfunc.apply(myobj, [1,2,3]);
//is the same as
myobj.myfunc(1,2,3);
Run Code Online (Sandbox Code Playgroud)