我從PHP獲取一些數據,代碼一切正常,我的PHP的結果是一個按Likes
排序的json列表。jQuery - getJson等待每個循環內的函數在繼續之前完成
的getJSON導致:
[{"ref":"2038", "name":"aaa", "likes":"10"},
{"ref":"2032", "name":"sss", "likes":"9"},
{"ref":"1875", "name":"off", "likes":"6"},
{"ref":"0087", "name":"mki", "likes":"3"},
{"ref":"1256", "name":"qvb", "likes":"3"},
{"ref":"8754", "name":"dsa", "likes":"2"},
{"ref":"4359", "name":"ety", "likes":"0"},
...]
我的問題是,當我環槽的結果,地理位置函數被調用,以計算各部件的距離。看起來地理定位功能不是同時被調用,並且列表混淆了。
我的問題是:如何等待地理位置函數計算距離,將結果追加到列表中並繼續到下一個元素?我正在研究使用promise
,但我不確定如何將其與我的代碼一起使用。
的jQuery:
function loadAllMembersData() {
var url_featured = "https://example.com/BBB?members=all";
$.getJSON(url_featured, function (result) {
//10 results
$.each(result, function (i, field) {
var ref = field.ref;
var name = field.name;
var likes = field.likes;
var lat = field.lat;
var lng = field.lng;
console.log(i); //index(i) is fine 0 to 9
getLocationServices(lat, lng, function (r) {
console.log(i); //index(i) becomes mixed up (2, 3, 0, 6,...)
var displayDistance = r + " miles away";
$("#membersList ul").append('<li>' +
'<a href="#" class="item-link item-content" style="padding: 0">' +
'<div>' + displayDistance + '</div>' +
'<div>' + name + '</div>' +
'<div>' + likes + '</div>' +
'</a>' +
'</li>');
});
});
});
}
不要等待地理位置調用結束;那隻會浪費時間。而是按照您的要求進行呼叫,然後立即顯示所有內容。如果需要,也可以「排序()」。 –
我的電話當時僅限於10個結果,當向下滾動時會加載更多結果。列表很難排序 – SNos