我一直在努力学习MS的一些JQuery代码,我不太了解以下代码:
$.when(......)
.pipe(a())
.pipe(b())
.pipe(c());
a = function(){new $.Deferred().resolve();};
b = function(){d();};
c = ... //some code
代码实际上运行得很好,但我认为a()和b()都不会返回延迟或承诺的对象,那么为什么这些方法可以链接在一起呢?
答案 0 :(得分:1)
.pipe()
调用的函数不需要返回Deferred
或Promise
。来自documentation
这些过滤器函数可以返回一个新值,传递给管道承诺的done()或fail()回调,或者它们可以返回另一个可以通过其已解析/拒绝状态的可观察对象(Deferred,Promise等)和管道承诺的回调值。
在您的代码中,由于它们没有return
语句,因此它等同于return undefined;
,这被视为“要传递的新值”。