【发布时间】:2014-06-07 08:28:27
【问题描述】:
我从这里的一个非常好的答案中获得了以下内容,将两个建议的方法拼接在一起,但我看不出如何让代码正常工作。
var animals = ['mouse', 'newt', 'shrew', 'grasshopper', 'frog', 'hedgehog'];
$('#s1text1').delay(dur).fadeOut(dur).promise()
.then(function() {
return $('#s1text2').fadeIn(dur).promise();
})
.then(function() {
var p = new $.Deferred().resolve();
return $.each(animals, function(i, animal) {
p = p.then(function() {
return $('.' + animal).fadeIn(defaultDur, function() {
animateAnimalGroup(animal);
}).promise();
});
})
.then(function() {
return $('#s1text2').fadeOut(dur).promise();
})
.then(function() {
return $('#s1text3').fadeIn(dur).promise();
})
.then(function() {
return $('#s1text4').fadeIn(dur).promise();
});
任何帮助/建议将不胜感激。如果有人知道的话,关于这方面的一个很好的教程/文章也会非常有用,我已经阅读了一些内容,但我正在努力理解它。
【问题讨论】:
-
实际描述问题会很有帮助。什么是不工作的,它应该如何工作?
-
你在哪里关闭
p = p.then中的.then? -
var p = new $.Deferred().resolve();的意义何在?为什么要创建一个 deferred 并立即解决它?为什么不创建一个延迟的,然后再解决呢?或者更好的是,当您可以使用 jQuery 动画中的 Promise 时,为什么还要创建自己的? -
@jfriend00 为了得到一个空的已解决承诺,以后用于排队操作。
标签: javascript jquery promise deferred