簡體   English   中英

為什么$ .when.apply不按預期工作

[英]Why doesn't $.when.apply work as expected

所以說我有一個$ .post函數數組

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

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

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

你應該使用:

$.when.apply($, pa);

apply的第一個參數是應該調用函數的上下文(即this在函數的上下文中意味着什么)。 第二個參數是一個帶有函數參數的數組。

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

$.when.apply(null, pa);
$.when.apply($, pa);

Function.prototype.apply要求的上下文中作為第一個參數(其用作參考對象this ,在被調用的函數)

所以你可以稱之為

$.when.apply( null, pa );

我喜歡用一點“詭計”來避免每一次。 我們可以調用Function.prototype.bind類的

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

現在,我們確實可以打電話

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM