繁体   English   中英

jquery.get(URL)同步

[英]jquery.get(url) synchronization

OS X 10.6.8,Chrome 15.0.874.121

我遇到了javascript / jquery的问题:我想从基本url下载头文件,然后向其中添加更多文本,而不是将其吐出到客户端。 我正在使用以下代码:

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)之后才完成获取文件的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语句之后直到成功加载整个文件后,还有其他方法可以保留代码吗?

没有。*

但是,如果您希望它看起来更具吸引力,请尝试以语义方式描述您要实现的目标,然后相应地编写函数。 也许:

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");
});

我不知道,这更具吸引力吗? 就个人而言,我认为原始版本还不错,所以我的并没有更好的选择,但重点是使用语义。

* 您可以使用setTimeout进行轮询,看看是否已收到响应。 技术上讲 ,这是一种替代方法,但肯定没有吸引力,对吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM