gpt4 book ai didi

javascript - Ajax 调用 JQuery 中的 MongoDB 查询每个循环都会影响结果的顺序

转载 作者:行者123 更新时间:2023-11-28 15:02:36 24 4
gpt4 key购买 nike

我正在尝试运行 AJAX 调用,该调用执行 mongoDB 查询并在 JQuery 每个循环中返回排序结果。排序的数据库结果不会以正确返回的顺序附加到列表中。一些将 has_users 设置为 true 的结果会附加到列表中的错误位置。如果我删除对 AJAX/MongoDB 功能的 itemQuery() 函数调用,列表项将以正确的排序顺序附加。知道我做错了什么吗?

$.each(items, function (i, item) {
//itemQuery() holds ajax call that runs mongoDB query and returns sorted results
itemQuery(item._id).done(function(data) {
if (data.length > 0) {
has_users = true;
} else {
has_users = false;
}

listItem = buildListItem(item, has_users);
$('#list_dropdown').append(listItem);
});

});

最佳答案

某些 Ajax 调用先于其他调用完成,因此您会得到错误的顺序。您可以使用$.map()而不是 $.each(),返回一个 Promise,并使用 $.when()等待所有 promise 完成,然后追加元素。

你的代码可能是这样的:

$.when(
$.map(items, function (i, item) {
//itemQuery() holds ajax call that runs mongoDB query and returns sorted results
return itemQuery(item._id).done(function(data) {
if (data.length > 0) {
has_users = true;
} else {
has_users = false;
}

return buildListItem(item, has_users);
});
})
).then(function (elements) {
$('#list_dropdown').append(elements);
});

关于javascript - Ajax 调用 JQuery 中的 MongoDB 查询每个循环都会影响结果的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40352617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com