我需要一些帮助来满足以下要求。
- 从网络服务器下载巨大的多部分 csv 文件,并在为用户打开之前在客户端加入这些部分。
- 在下载之前,我可以从网络服务器获取部件的数量和它们的 URL。
- 我需要在客户端浏览器中执行此操作,因此我认为 javascript 是最佳选择。
- 用户使用 IE 作为主要浏览器,但我不能要求他们更改安全设置(vbscript/activxcontrol 不起作用)
我需要一些帮助来满足以下要求。
如果您别无选择,只能使用它,您可以使用聚合:
var data; // will contain the retrieved data
/**
* Grab data from the first URL in the list, adding it
* to the global data variable. If the list is empty,
* we got all the data and we succeed. If an XHR fails, we fail.
*/
function prepData(urlList, success, fail) {
if(urlList.length===0) {
succes(); // wrap in timeout if you need to break out of call chain
return;
}
var xhr = new XMLHttpRequest();
var url = urlList.splice(0,1)[0];
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.status === 200 && xhr.readyState === 4) {
data += xhr.responseText;
prepData(urlList, success, fail);
} else {
fail(urlList, xhr); // again, wrap in timeout to break out of call chain
}
}
}
然后我们可以使用如下代码调用它:
/**
* prepare our data prior to application "start"
*/
prepData(['...','...','...'], function (){
console.log("finished aggregating data");
// all went well. Start the actual data-consuming code
}, function(notLoadedList, failedXhrObject){
console.log("ohnoes!", notLoadedList, failedXhrObject);
// something went wrong, and we can fail gracefully
});