怎样才能链接多个pipe()方法?

时间:2016-07-04 22:34:39

标签: jquery

我一直在努力学习MS的一些JQuery代码,我不太了解以下代码:

$.when(......)
.pipe(a())
.pipe(b())
.pipe(c());

a = function(){new $.Deferred().resolve();};
b = function(){d();};
c = ... //some code

代码实际上运行得很好,但我认为a()和b()都不会返回延迟或承诺的对象,那么为什么这些方法可以链接在一起呢?

1 个答案:

答案 0 :(得分:1)

.pipe()调用的函数不需要返回DeferredPromise。来自documentation

  

这些过滤器函数可以返回一个新值,传递给管道承诺的done()或fail()回调,或者它们可以返回另一个可以通过其已解析/拒绝状态的可观察对象(Deferred,Promise等)和管道承诺的回调值。

在您的代码中,由于它们没有return语句,因此它等同于return undefined;,这被视为“要传递的新值”。