OS X 10.6.8,Chrome 15.0.874.121
我遇到了javascript / jquery的问题:我想从基本网址下载一个头文件,然后再添加一些文本,然后将其吐出到客户端。我正在使用以下代码:
var bb = new window.WebKitBlobBuilder;
$.get('js/header.txt', function(data) {
bb.append(data);
console.log("finished reading file");
});
console.log("just before getting the blog");
var blob = bb.getBlob('text/plain');
// append some more
saveAs(blob,"name.dxf");
但是失败了,因为只有在saveAs(blob)
执行后才能完成文件的获取。我知道我可以解决它:
var bb = new window.WebKitBlobBuilder;
$.get('js/header.txt', function(data) {
bb.append(data);
//append some more
var blob = bb.getBlob('text/plain');
saveAs(blob,"name.dxf");
});
但这看起来并不吸引人:我只想使用get
语句将标题附加到blob,如果我想从文件系统读取页脚,我必须做一个get
内的get
,并在内部get
是否有其他方法可以在执行get语句之后保留代码,直到整个文件成功加载为止?
答案 0 :(得分:0)
没有。*
但是,如果您希望它看起来更具吸引力,请尝试从语义上描述您要实现的目标,然后相应地编写函数。也许:
function loadBlob (loadHeader, loadBody) {
loadHeader(loadBody);
}
loadBlob(function (oncomplete) {
$.get("js/header.txt", function(data) {
bb.append(data);
oncomplete();
});
}, function () {
var blob = bb.getBlob('text/plain');
// append some more
saveAs(blob,"name.dxf");
});
我不知道,那更有吸引力吗?就个人而言,我觉得原来就好了,所以也许我的不是更好,但重点是使用sematics。
* 您可以使用setTimeout
进行轮询并查看是否已收到回复。那是技术上的另一种选择,但肯定不是更有吸引力,是吗?