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