javascript - 通过 Javascript 中的循环链接回调函数

标签 javascript callback

我不想再同时预加载我的图像,我想一个接一个地加载它们。到目前为止,我是这样做的:

for (var i = current; i < current + 5; i++) {
    images[i].load();
}

所以我开始考虑如何使用回调来顺序加载它们:我可以将回调传递给load(callback),它会在一张图片加载完成后调用。所以我也可以这样做,它们将依次加载:

images[current].load(function(){
    images[current + 1].load(function(){
        images[current + 2].load(function(){
            images[current + 3].load(function(){
                images[current + 4].load();
            });
        });
    });
});

这行得通,但我很想将其转换为循环。我无法以某种方式扭曲我的头来实现这一目标。你能帮忙吗?


我只能提供一个我的load(callback)方法的例子,因为它太长了:

load = function(callback){
    // do preloading things and simulate load event:
    setTimeout(function(){
        callback.apply(this);
    }, 1000);
} 

这里有一个 fiddle 来测试它:http://jsfiddle.net/ajuc7g1q/1/

最佳答案

可能是递归函数?

function loadImages(){
  var images = [img1, img2, ...];
  loadImage(images);

}

function loadImage(images){
  if(images.length){
      images.shift().load(function(){
          loadImage(images);
      });
  }
}

Demo

关于javascript - 通过 Javascript 中的循环链接回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346538/

相关文章:

javascript - 在两个 JavaScript 哈希中查找差异(添加和删除对)的最有效方法

javascript - 如何使用 Javascript 添加时间到日期时间?

ruby-on-rails - rails : controller won't update model correctly

c# - 将任务实例传递给任务的委托(delegate)

c++ - 将成员函数分配给实例成员的属性

java - 将 Javascript new Date 转换为 Java joda DateTime 格式

javascript - 创建显示模块模式的各种开口

javascript - JS/CSS : Preload images from the HTML file while they are hidden

java - Mapbox,MapSnapshotter.callback 并不总是被调用

javascript - 参数对应: callback vs.闭包(?)