我希望了解为什么在尝试直接链接延迟对象时与尝试通过将对象保存在变量中并在该变量上调用一个或多个延迟方法来进行链接时得到不同的行为。
将对象保存在变量中时,发送到每个函数的值是相同的(在下面的代码片段中,5) - 即在这种情况下值不会过滤。当直接链接时,值过滤......所以我不清楚Deferred.pipe()
在几个不同的语句中设置 a 时如何进行过滤。通过我阅读jquery docs,它应该是可能的:
Deferred 对象是可链接的,类似于 jQuery 对象的可链接方式,但它有自己的方法。创建 Deferred 对象后,您可以通过直接从对象创建链接或将对象保存在变量中并在该变量上调用一个或多个方法来使用以下任何方法。
我究竟做错了什么?
这是我的代码:
<script type="text/javascript">
$(document).ready(function () {
// This works as expected - alert(20)
var defer = new $.Deferred();
defer.pipe(myFunction).pipe(myFunction).pipe(myAlert);
defer.resolve(5);
// This does not work as expected - alert(5)
var defer2 = new $.Deferred();
defer2.pipe(myFunction);
defer2.pipe(myFunction);
defer2.pipe(myAlert);
defer2.resolve(5);
});
var myFunction = function (value) {
return value * 2;
}
var myAlert = function (value) {
alert('The value is ' + value);
}
</script>