簡體   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