首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用javascript批量下载文件以防止浏览器超时的好方法

利用javascript批量下载文件以防止浏览器超时的好方法
EN

Stack Overflow用户
提问于 2017-06-10 16:02:28
回答 2查看 39关注 0票数 0

因此,首先,我在这里使用fancybox库。

http://fancyapps.com/fancybox/

我的最终目标是创建一个通过云前端下载存储在亚马逊S3上的图片的相册。现在,它被设置为有一个主页,每个页面都有一张图片。单击该图像,它将打开一个相册。

问题是,如果我的相册有75个项目或任何较大的项目,浏览器将超时并崩溃或导致我的计算机耗尽内存(我正在本地运行它,因为我开发它)。

下面是一些示例代码

代码语言:javascript
复制
function photoDL(){
  var num = 0;
  var batch = 0;
    for(i = 1; i < 62; i++){
    var myphoto = 'https://MYCODEFRONTSTUFF/'+i+'.jpg';
    var albumpic = new Array();
    albumpic.push(myphoto);

    for(batch = 1; batch < 5; batch++){
      $.fancybox.open([
        {
          src  : albumpic[num],
          opts : {
            caption : 'First caption'
          }
        },
      ], {
        loop : false,
        hash : "album3"
      });
      setTimeout(photoDL(), 10000);
      num += 1;



    }


  }
}

我知道里面有些东西看起来不太对劲。我在想,我可以将SetTimeout设置为buffer,并给它一些时间来下载每个图像,但这并没有帮助。它仍然试图一次下载所有这些文件。我正在尝试创建批处理的想法,但遇到了死胡同。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2017-06-10 16:39:22

你的代码循环61次,在每个循环中,你有运行5次的内部循环。在每个内部循环中,您打开新的fancyBox实例(覆盖现有的实例),然后调用主循环!

所以,你打开fancyBox 243次,10000ms之后,你打开了58,806个新实例,你想知道为什么你的浏览器崩溃了?:)

票数 0
EN

Stack Overflow用户

发布于 2017-06-10 19:14:57

感谢你的见解,我确实设法弄清楚了这一点。介绍固定代码

代码语言:javascript
复制
function photoDL(batch, url, ftype){
  var num = 0;
  var fArr = [];
  var albumpic = new Array();
  var fboxOpen = '';
  for(i = 1; i < batch; i++){
  var myphoto = url+i+ftype;
  albumpic[i] = myphoto;
  //console.log(albumpic[i]);
  var fboxOpen =
    {
      src  : albumpic[i],
      opts : {
        caption : 'First caption'
      }
    };
  fArr[i] = fboxOpen;

  }
  fArr.shift();
  var jsonString = JSON.stringify(fArr);
  console.log(jsonString);


  $.fancybox.open(
    fArr
    , {
      loop : false,
      hash : "album3"
    });
  }

有点慢,但它确实有效!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44471016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档