jquery.get(url)同步

时间:2011-12-05 20:03:28

标签: javascript synchronization

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

中吐出blob

是否有其他方法可以在执行get语句之后保留代码,直到整个文件成功加载为止?

1 个答案:

答案 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进行轮询并查看是否已收到回复。那是技术上的另一种选择,但肯定不是更有吸引力,是吗?