jquery.get (url) синхронизация - PullRequest
       0

jquery.get (url) синхронизация

0 голосов
/ 06 декабря 2011

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). Я знаю, что могу это исправить с помощью:

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 до тех пор, пока весь файл не будет успешно загружен?

1 Ответ

0 голосов
/ 06 декабря 2011

Нет. *

Но, если вы хотите, чтобы это выглядело более привлекательно, попробуйте описать семантически то, чего вы пытаетесь достичь, и затем напишите соответствующие функции.Может быть:

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 для опроса и проверки, был ли получен ответ.Это технически альтернатива, но, конечно, не более привлекательная, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...