在Javascript中通过循环链接回调函数

在Javascript中通过循环链接回调函数,javascript,callback,Javascript,Callback,我不想再同时预加载我的图像了,我想一个接一个地加载它们。直到现在我都是这样做的: for (var i = current; i < current + 5; i++) { images[i].load(); } 这是可行的,但我想把它转换成一个循环。我不能为了达到这个目的而绞尽脑汁。你能帮忙吗 我只能提供我的load(callback)方法的一个示例,因为它太长了: load = function(callback){ // do preloading things

我不想再同时预加载我的图像了,我想一个接一个地加载它们。直到现在我都是这样做的:

for (var i = current; i < current + 5; i++) {
    images[i].load();
}
这是可行的,但我想把它转换成一个循环。我不能为了达到这个目的而绞尽脑汁。你能帮忙吗


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

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

这里有一把小提琴来测试它:

可能是递归函数

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

}

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

我刚刚想出了递归执行的方法:

var call_chain = function(){};

for(var i = current + 5; i >= current; i--){
    (function(f, index){
        call_chain = function(){
            images[index].load(f);
        };
    })(call_chain, i);
}

call_chain();

Post
.load
实现。请按上面所述在此处加载实现。我发布了一个加载函数示例和一个小提琴来测试它!抱歉,我忘了提到我并不总是想加载所有的图片,但从给定的索引开始只加载大约五个。这里有一个例子:干净的解决方案,但一个次要的技术点。这不是递归的,因为堆栈上一次只有
LoadImage
的onc实例。递归的具体意思是有一些东西可以返回。
var call_chain = function(){};

for(var i = current + 5; i >= current; i--){
    (function(f, index){
        call_chain = function(){
            images[index].load(f);
        };
    })(call_chain, i);
}

call_chain();