更新:这个问题是已经过时的文件是准确和最新的。
我已经探索了一下jQuery的递延/无极API和我对之间的差异非常困惑pipe()
和then()
哲学和jQuery的文档。 我发现,管()仅仅是那么一个别名()在jQuery 1.8。
从jQuery的来源:
// Keep pipe for back-compat
promise.pipe = promise.then;
然而,文档是完全不同的pipe()
和then()
因为它们据称具有完全不同的用途。
描述为then()
说明:添加处理程序当递延对象是解决或拒绝被调用。
描述用于pipe()
说明:实用方法来筛选和/或链Deferreds。
据我所知,历史上他们有不同的效果,但在整体的文档管或因为那时文档 ,它甚至不说,这两个功能,现在做同样的事情。
所以,这里是我的问题的两个部分:
- 为什么之间的文档
pipe()
和then()
在jQuery 1.8的有什么不同? - 为什么
then()
返回一个新的延期对象? 这个行为是完全无证(该文档只是说它返回一个延迟,而不是它的一个新的 )。 据我所知,它具有实用性这样做(即实现所有的pipe()
的功能),但哲学为什么是这样呢? 这是不必要给出的描述then()
附加处理程序)。
更新
我甚至会走这么远,说了then()
文档是误导和不准确的:
由于deferred.then 返回延迟对象 ,递延对象的其它方法可以被链接到这个人,包括附加的。然后()方法。
也许这只是含糊其辞,但它意味着它返回你叫递延对象then()
上的链接,而实际上它返回一个全新的对象....
再次更新
看来文档是完全错误的/过时! 所以,回答了为什么文件没有提到他们是同样的事情。 然而,我的第二个问题仍然有效。 是什么原因then()
返回一个新的延期只是使得它和pipe()
可以进行相同呢?