簡體   English   中英

使用多個jquery .get()不會按順序返回數據?

[英]Getting using multiple jquery .get() doesn't return the data in sequence?

就像標題所說,我正在使用多個url來獲取我的數據,而我正在使用jquery .get()方法。 例如:

var m=0;
$.get(url1).done(function(data) 
{
    list[m] = data;
    m++;
}
$.get(url2).done(function(data) 
{
    list[m] = data;
    m++;
}
$.get(url3).done(function(data) 
{
    list[m] = data;
    m++;
}
$.get(url4).done(function(data) 
{
    list[m] = data;
    m++;
}

我有四個url,我將數據放入數組list[] 我需要數據按順序排列,這意味着list[1]來自url1, list[2]來自url2,依此類推。

但問題是,它並不總是按順序排列。 有時我從url4獲取list[1]或url1中的list[2]數據。 似乎使用多個.get()函數並不總是按順序返回數據。 你們知道如何使用.get()函數按順序返回數據嗎?

AJAX是異步的,響應的順序可以與發送請求的順序不同。

一種解決方案是使m成為在發送請求時設置的閉包變量,這樣您就可以填寫正確的列表元素:

$.each([url1, url2, url3, url4], function(m, url) {
    $.get(url).done(function(data) {
        list[m] = data;
    });
});

一種解決方案是將它們全部鏈接在一起,這樣一個人的成功就會觸發下一次獲取。 您可以設置另一個函數,在最后一次完成時調用它作為回調。 像這樣的東西(沒有測試過)

var m=0;
$.get(url1).done(function (data) {
    list[m] = data;
    m++;

    $.get(url2).done(function (data) {
        list[m] = data;
        m++;

        $.get(url3).done(function (data) {
            list[m] = data;
            m++;

            $.get(url4).done(function (data) {
                list[m] = data;
                m++;
                alldone(data);
            });
        });
    });
});

function allDone(data) {
    //do this when last one completes
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM