【发布时间】:2016-07-25 21:04:09
【问题描述】:
jQuery.when() 的documentation 表示此函数需要延迟。但是,它后来也说:
如果将单个参数传递给 jQuery.when() 并且它不是 Deferred 或 Promise...
这似乎暗示它也可以接受 Promises。但是 Promise 不是 Deferreds——它们有 Deferred 方法的一个子集。我想你可以说 Deferred 是 Promise,但 Promise 不是 Deferred。
问题:
- $.when() 可以接受 Promise 或 Deferreds 吗?这似乎在我的测试中有效。
- 文档中是否存在错误?我认为应该说 $.when() 接受 Promises,而不仅仅是 Deferreds。
【问题讨论】:
-
1.是的,它可以。 2. 可能更适合询问 jQuery 开发者。
-
@Karl-AndréGagnon 2. 好主意 - 我已经提交了这个 jquery 文档错误:github.com/jquery/api.jquery.com/issues/906
-
@JonathanAquino
$.when()可以接受jQuery.Deferred()、jQuery.promise()或本机Promise。见blog.jquery.com/2016/01/14/jquery-3-0-beta-released。$.when()的文档试图描述$.when()可以接受一个既不是jQuery.Deferred()、jQuery承诺对象也不是本机Promise的参数,并且.then()或.done()回调将处理传递参数作为解析jQuery.Deferred() -
@JonathanAquino jQuery 方法的一些特性可能没有详细说明,甚至没有在文档中提及。
jQuery对象还可以使用文档中未列出的功能。一种方法是查看 jQuery github.com/jquery/jquery 的源代码以与文档中的描述进行比较。您也可以尝试在 IRC/Chat irc.jquery.org 和论坛 forum.jquery.com 提问 -
@guest271314:在 3.0 真正发布之前,您可以假设 jquery-tagged 问题不使用它(并且 jQuery 文档不涵盖它)。即使这样,我们也可能需要一个新标签,因为它们的行为截然不同。
标签: javascript jquery parameter-passing jquery-deferred .when