2

私が望むのは、非同期モードでコードを実行して、より高速な応答 (マルチスレッド) を取得することです。

フィードを含む「ソース」のような配列があり、それぞれからデータを取得したいのです。

私はこのようなことを考えました:

$.each(sources, function(key, val) {
    JSON CALL OF EACH SOURCE
}

次に、すべての結果を配列にグループ化して表示します。問題は、json 呼び出しの一部に時間がかかるため、非同期モードで呼び出す必要があることです。

jQueryを使用して非同期モードで「それぞれ」を実行するにはどうすればよいですか??

4

1 に答える 1

3

遅延オブジェクトの使用:

// get an array of jqXHR objects - the AJAX calls will
// run in parallel, subject to browser limits on the number
// of concurrent connections to each host
var defs = $.map(sources, function() {
    return $.ajax({ url: this });
});

// when they're all done, invoke this callback
$.when.apply($, defs).done(function() {
    // "arguments" array will contain the result of each AJAX call        
    ...
});

引数のみが返されるように AJAX 関数を変更するにdataは、次を使用できます.pipe()

var defs = $.map(sources, function() {
    return $.ajax({ url: this }).pipe(function(data, text, jqxhr) {
        return data;  // filtered result 
    });
});
于 2012-10-24T22:50:48.990 に答える