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