完成异步下载(jquery自定义事件?延期?)

时间:2013-06-17 15:32:08

标签: jquery multithreading html5 javascript-events

我正在使用Chrome下载大型PNG文件(地图图块256x256)。 Chrome chokes on TOO many XHR2 requests

如果我只是循环播放并执行其中的5K,那么Chrome浏览器就不会限制并且内存不足(Chromium Folks将在某一天解决这个问题:https://code.google.com/p/chromium/issues/detail?id=244910

直到那时我需要做自己的限制。

我认为我正在寻找的是开始一个“线程”,这将涉及一批约100个xhr2提取和IndexedDB(IDB)存储。然后当它完成“发信号”时,父进程再向它提供100个,然后循环直到完成(这就是我将如何做到C ++,C#,VB.NET等)。

但这是在JavaScript中,我刚刚离开它多年后才重新开始。

我应该寻找什么? JQuery延期?诺言?自定义活动? [trigger()& bind()]或执行此线程协调的其他方式(监视器,信号量)等。浏览器确实将XHR2和IDB请求放在不同的线程上,但不提供典型的IPC控制机制。

我正在寻找以前工作的一些指示和一些提示。

1 个答案:

答案 0 :(得分:0)

我首先考虑创建数量有限的网络工作者。但是,在FireFox和IE10中,Web工作者中的IndexedDB工作不佳。 (同步IDB或异步IDB)。我认为异步IDB适用于Chrome。

所以我选择使用Jquery Defer,等待IDB put完成,然后用$ .resolve()发信号以启动一个新的fetch / save线程。

工作正常。