首页 >web前端 >js教程 >如何确保 $.when() 等待数组中的所有延迟任务?

如何确保 $.when() 等待数组中的所有延迟任务?

Linda Hamilton
Linda Hamilton原创
2024-12-11 02:41:19994浏览

How to Ensure $.when() Waits for All Deferred Tasks in an Array?

将延迟数组传递给 $.when()

问题:

考虑以下代码,其中列表创建了 的延迟任务:

var deferreds = getSomeDeferredStuff();

$.when(deferreds).done(function() { console.log("All done!") });

但是, “都完成了!”在所有延迟任务完成之前记录。如何将一组 deferred 传递给 $.when() 并确保它等待所有任务完成?

答案:

传递一组值到需要单独参数的函数,请使用 Function.prototype.apply:

$.when.apply($, deferreds).then(function() { console.log("All done!") });

Here's a代码分解:

  • $.when.apply($, deferreds):将 deferreds 数组分散到 $.when().
  • then(function) 的单独参数中:附加一个在解决所有延迟时运行的处理程序。

或者,在 ES6 和新版本中,您可以使用扩展运算符:

$.when(...deferreds).then(function() { console.log("All done!") });

在任何一种情况下,处理程序都会收到一组结果,每个延迟一个。处理这个数组以获得你需要的值。

以上是如何确保 $.when() 等待数组中的所有延迟任务?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn