【发布时间】:2012-08-27 13:00:27
【问题描述】:
假设我有以下代码:
$.when(func1(),funct2(),func3())
.done(...)
.fail(...);
我想知道这些函数是否会立即被调用,如果 jQuery 会在它们被解析时连续调用它们。根据文档,它们似乎将异步运行:
在将多个 Deferred 对象传递给 jQuery.when 的情况下,该方法从一个新的“主” Deferred 对象返回 Promise,该对象跟踪它已传递的所有 Deferred 的聚合状态。
...
在其中一个 Deferred 被拒绝的多个 Deferred 情况下,jQuery.when 立即为其主 Deferred 触发 failCallbacks。请注意,此时某些 Deferred 可能仍未解决。
我读到这里的方式是 func1、func2 和 func3 都会立即被触发,并且返回的主延迟对象将处理调用正确的回调函数,但是每当检测到第一个拒绝()时,失败( ) 回调将立即触发。我对此的理解是正确的还是我遗漏了什么?
【问题讨论】:
-
func1()、funct2()和func3()是否返回Deferred对象?这些函数将在$.when()被调用之前被调用,因为你是在自己调用它们。 -
是的,这只是一个假设,但假设它们都会返回一个 promise() 并且它们都会被解决。
标签: jquery