我从下面的一个很好的答案中得到了以下内容:将两个建议的方法缝合在一起,但是我看不到如何使代码正常工作。
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();
});
任何帮助/建议将不胜感激。如果有人知道这一点,那么一篇很好的教程/文章也将非常有用,我已经阅读了一些内容,但仍在努力争取。
最佳答案
您不想返回$.each
的结果,而是想返回循环中已累积的p
承诺。此外,它缺少右括号:
.then(function() {
var p = new $.Deferred().resolve();
$.each(animals, function(i, animal) {
p = p.then(function() {
…
});
})
return p;
})
.then(…)
关于javascript - promise 和延期对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24067235/