[英]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.