【发布时间】:2013-12-05 17:07:16
【问题描述】:
我一直在阅读有关排队 JS 回调而不将它们堆叠在这里的信息, How do I animate in jQuery without stacking callbacks?
我尝试过 Julian Aubourg 的回答,我注意到在从函数中删除“return”语句后,一切都会立即发生。
我只是想知道这些返回语句的行为是什么,以及它们在使这段代码同步方面扮演什么角色。
$('div1').fadeOut('slow').promise().pipe(function() {
return $('div2').fadeOut('slow');
}).pipe(function() {
return $('div3').animate({ top: 500 }, 1000 );
});
【问题讨论】:
-
仅供参考,
.pipe()已弃用。但您的问题与其说是关于 JavaScript 语言,不如说是关于 jQuery 定义的特定 API。 -
@BlueSkies 实际上 - 他的问题更多是关于一般承诺,但不是同意的。
-
作为旁注,
pipe()被then()替换 -
documentation 的重要部分是:“这些过滤器函数可以返回 [...] 另一个可观察对象(Deferred、Promise 等),它将通过其已解决/拒绝状态和管道承诺回调的值。”
-
@BlueSkies 这就是我所说的 "promises in general" 的意思,jQuery 遵循规范,这个问题是关于该规范的 - 尽管就像你建议的那样 - 它包含已弃用的
pipe而不是规范then.
标签: javascript jquery callback