将延迟数组传递给 $.when()
处理一组复杂的异步任务时,可以方便地将 Deferred 对象数组传递给 $.when() 方法,以在所有任务完成时发出通知。但是,默认情况下,$.when() 期望单独的 Deferred 对象作为单独的参数,如果 Deferred 对象的数量未知,则这可能不切实际。本文使用 Function.prototype.apply 提供了此问题的解决方案。
解决方案:
要将 Deferred 对象数组传递给 $.when(),请使用Function.prototype.apply 方法如下:
$.when.apply($, my_array).then( ___ );
这允许您传递 Deferred 对象的数组作为 $.when() 的单个参数。下面的示例代码演示了这种方法:
var deferreds = getSomeDeferredStuff(); $.when.apply($, deferreds).done(function() { $("div").append("<p>All done!</p>"); });
ES6:
在 ES6 中,您可以使用扩展运算符 (...) 代替Function.prototype.apply:
$.when(...my_array).then( ___ );
注意:
需要注意的是,提供给 .then() 方法的处理函数应该处理参数数组检索每个承诺的结果。由于处理程序需要的形式参数的数量可能事先未知,因此处理程序必须相应地处理参数数组。
以上是如何将延迟对象数组传递给 jQuery 的 `$.when()`?的详细内容。更多信息请关注PHP中文网其他相关文章!