2013-01-22 54 views
1

所以說我有$。員額功能的陣列

var pa = [$.post(url0), $.post(url1),......]; 

$.when(pa[0],pa[1],...]) // works as expected 

$.when.apply(pa) // does not work 

回答

1

Function.prototype.apply需要背景作爲第一個參數(其用作this參考對象,在被調用的函數)

所以,你可以這樣調用它

$.when.apply(null, pa); 

我喜歡用有點「掛羊頭賣狗肉」,以避免每次。我們可以調用Function.prototype.bind

var when = Function.prototype.apply.bind(jQuery.when, null); 

現在,我們的確可以稱之爲

when(pa).done(/* ... */) { } 
1

你應該使用:

$.when.apply($, pa); 

apply的第一個參數是應該調用該函數的上下文(即,在該上下文中意味着什麼this e功能)。第二個參數是一個包含函數參數的數組。

1

您忘記了.apply()的第一個參數,它是該函數的thisArg。由於$.when不關心它的this價值,你可以通過任何東西:

$.when.apply(null, pa); 
$.when.apply($, pa); 
相關問題