setTimeout不能按预期工作,因为它会在不等待延迟运行'setTimeout'的第一个参数的情况下执行下面的代码
(function() {
var a = ['#bird','#flower','#cat'];
var totalno = settings.imageArray.length;
function rotateImages(start) {
var nextImage = start + 1;
if(nextImage % totalno == 0){
nextImage=0;
}
//do animate here
$(settings.imageArray).fadeOut();
window.setTimeout(function() {
rotateImages(++start % totalno);
}, settings.imageArray[start].delay);
}
rotateImages(0);
})();
有没有办法写它,以便它不会立即淡出第一张图像?
简化版将是:
(function() {
var a = ['#bird','#flower','#cat'];
function rotateImages(start) {
//do something here
window.setTimeout(function() {
rotateImages(++start % a.length;);
}, 1000);
}
rotateImages(0);
})();
答案 0 :(得分:1)
它将执行以下代码 随后无需等待 延迟运行第一个参数 '的setTimeout'
看起来你正在直接开始第一次旋转。而不是:
rotateImages(0);
尝试以延迟开始第一次旋转,例如:
window.setTimeout(function() {
rotateImages(0);
}, settings.imageArray[0].delay);