我正在尋找一種方式來完成特定任務,那就是,從使用.bind避免.CALL()和。適用()()
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
打電話。如果你有一個未知數量的承諾對象,你通常會將這些對象推入一個數組中,然後能夠將這些數據傳入.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/
'.bind($。當,空)'? – Raynos 2012-04-20 14:10:43
@Raynos:好的,把鹽揉進我受傷的自我。:p – jAndy 2012-04-20 14:18:21