gpt4 book ai didi

javascript - 在 forEach 中连续进行 AJAX 调用 - 为什么我看不到结果?

转载 作者:行者123 更新时间:2023-12-02 23:48:16 25 4
gpt4 key购买 nike

注意:我知道我可能以错误的方式这样做,并且我希望获得有关更好地编写它的建议。

我有一个函数,当给定用户 ID 时,它会调用两个 API 来获取1. userid 所在的所有联赛列表。2. 每个联赛中所有用户的列表。

$.ajax({
type: "get",
url: "/api/user/" + userID,
dataType: "json",
success: function(response) {
response.leagues.classic.forEach(element => {
if (element.short_name == null) {
myLeagues.push(element.id);
}
});

}
}).then(function() {
myLeagues.forEach(leagueid => {
$.ajax({
type: "get",
url: "/api/league/" + leagueid,
dataType: "json",
success: function(response) {
if (response.standings.results.length < 30) {
response.standings.results.forEach(element => {
myOpponents.push(element.player_name)
});
}
}
});
})
}).then(function() {
console.log(myOpponents);
myOpponents.forEach(opponent => {
console.log(opponent)
});
})

console.log(myOpponents) 按预期输出包含所有对手的数组

console.log(opponent) 两行后不输出任何内容。

您能解释一下为什么会这样,并提出编写整个函数的更好方法吗?谢谢

最佳答案

试试这个:

async function someFunc(userID) {
let myLeagues = [];
let myOpponents = [];

try {
const results = await $.ajax({
type: "get",
url: "/api/user/" + userID,
dataType: "json"
});

results.forEach(element => {
if (element.short_name == null) {
myLeagues.push(element.id);
}
});

let leagues = myLeagues.map(leagueid => {
return $.ajax({
type: "get",
url: "/api/league/" + leagueid,
dataType: "json"
})
})

let leagueDatas = await Promise.all(leagues);

leagueDatas.forEach(val => {
if (val.standings.results.length < 30) {
val.standings.results.forEach(element => {
myOpponents.push(element.player_name)
});
}
})

myOpponents.forEach(opponent => {
console.log(opponent)
});
} catch (e) {
// handle error
}
}
someFunc(1)

关于javascript - 在 forEach 中连续进行 AJAX 调用 - 为什么我看不到结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55749040/

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