-->

管(),然后()在jQuery的1.8文档还是现实(pipe() and then() docume

2019-06-27 03:07发布

更新:这个问题是已经过时的文件是准确和最新的。

我已经探索了一下jQuery的递延/无极API和我对之间的差异非常困惑pipe()then()哲学和jQuery的文档。 我发现,管()仅仅是那么一个别名()在jQuery 1.8。

从jQuery的来源:

// Keep pipe for back-compat
promise.pipe = promise.then;

然而,文档是完全不同的pipe()then()因为它们据称具有完全不同的用途。

描述为then()

说明:添加处理程序当递延对象是解决或拒绝被调用。

描述用于pipe()

说明:实用方法来筛选和/或链Deferreds。

据我所知,历史上他们有不同的效果,但在整体的文档管或因为那时文档 ,它甚至不说,这两个功能,现在做同样的事情。

所以,这里是我的问题的两个部分:

  1. 为什么之间的文档pipe()then()在jQuery 1.8的有什么不同?
  2. 为什么then()返回一个新的延期对象? 这个行为是完全无证(该文档只是说它返回一个延迟,而不是它的一个新的 )。 据我所知,它具有实用性这样做(即实现所有的pipe()的功能),但哲学为什么是这样呢? 这是不必要给出的描述then()附加处理程序)。

更新

我甚至会走这么远,说了then()文档是误导和不准确的:

由于deferred.then 返回延迟对象 ,递延对象的其它方法可以被链接到这个人,包括附加的。然后()方法。

也许这只是含糊其辞,但它意味着它返回你叫递延对象then()上的链接,而实际上它返回一个全新的对象....

再次更新

看来文档是完全错误的/过时! 所以,回答了为什么文件没有提到他们是同样的事情。 然而,我的第二个问题仍然有效。 是什么原因then()返回一个新的延期只是使得它和pipe()可以进行相同呢?

Answer 1:

jQuery的1.8的文档更新不在线呢。

根据此最近的一篇博客 :

我们在更新的API文档的所有更改到1.8的过程,但现在你可以重提更改日志中的jQuery 1.8发布 ,看看有什么变化。

更新:是的, then()返回一个新的Deferred ,因为它等同于pipe()现在 。 我很有信心的文档更新将很快澄清这一点。

为了完整进一步更新:文档最近更新,现在说的管道() :

弃用注意:在jQuery 1.8的,所述deferred.pipe()方法被弃用。 所述deferred.then()方法,它取代它,应该使用。

和则() :

在此之前的jQuery 1.8,参数可能是一个功能或功能的阵列。

[...]

在jQuery 1.8中deferred.then()方法返回一个新的承诺,可以过滤状态和的通过函数推迟值,取代现在不推荐使用deferred.pipe()方法。 该doneFilterfailFilter功能过滤原始推迟的解决/拒绝的状态和值。 该progressFilter功能过滤到原来推迟的任何电话notifynotifyWith方法。 这些过滤函数可以返回一个新值一起承诺的传递.done().fail()回调,或者他们可以返回另一个观察的对象(递延,无极等)将通过其解决/拒绝的状态和值该承诺的回调。 如果使用的过滤器的功能是null ,或者没有指定,承诺将得到解决或作为原始相同的值拒绝。



文章来源: pipe() and then() documentation vs reality in jQuery 1.8