我有一个“JSFiddle-like”演示,使用XHR2在紧密循环中获取PNG(二进制Blob)。第一个演示抓取341个PNG图像,然后将它们保存在IndexedDB中(使用PouchDB)。
此演示工作正常:http://codepen.io/DrYSG/pen/hpqoD
(要操作,首先按[删除数据库],重新加载页面,等待状态=就绪(您应该看到它计划获取341个图块),然后按[下载图块]。)
下一个演示是相同的代码(相同的JS,CSS,HTML),但它试图获得6163个PNG文件(再次来自Google Drive)。这次您将在控制台日志中看到许多XHR 0错误。
http://codepen.io/DrYSG/pen/qCGxi
它使用的算法如下:
我的猜测是,所有这些XHR2请求都被异步触发,被放置在与JavaScript线程分开的线程上,然后当有太多未决请求时,Chrome就生病了。
FireFox没有这个问题,也没有IE10。
您可以分叉代码,并为第10行尝试不同的值:(要获取的最大切片数量)。
我已向 Chromium Bugs 提交了一个错误,但有没有人有任何限制将大量数据下载的异步XHR2提取到Chrome浏览器的经验?
答案 0 :(得分:0)
铬人们承认这是他们应该解决的问题:https://code.google.com/p/chromium/issues/detail?id=244910,但与此同时我使用jquery defer / resolve实现了限制以保持线程数低。
更新:我将删除我的codepen,因为我不再需要显示此错误。