gpt4 book ai didi

javascript - JavaScript 中的匿名回调无法正常工作

转载 作者:行者123 更新时间:2023-12-03 05:18:12 25 4
gpt4 key购买 nike

我正在尝试使用带有 JavaScript 的匿名回调,仅在另一个函数完成后才运行该函数。在第一个函数 getDisciplines() 中,运行 $getJSON 调用,该调用需要在运行 getRounds() 函数之前完成。这是因为在通过另一个 $getJSON 返回关联轮次之前需要了解纪律。

在代码底部,您可以看到返回的 console.log 命令的顺序。我可以看到问题是 getRounds() 函数在 getDisciplines() 完全完成之前运行。我该如何解决这个问题?

var my_Upcomings = []
var roundsCreated = {}
var my_RoundsList = []

getDisciplines("none", function() {
console.log("check in getRounds will start")
getRounds();
});

function getRounds(){
console.log("start getRounds")
console.log("my input Upcomings array:", my_Upcomings)
for (var i = 0; i < my_Upcomings.length; i++) {
console.log("check in get Rounds for loop")
my_UpcomingIdString = my_Upcomings[i].poolId.toString()
my_roundsUrl = startUrl + tournamentUrl + "/rounds/" + my_UpcomingIdString
$.getJSON(my_roundsUrl, //output: {"1":"Round 1","2":"Round 2"}
function (json) {
my_CurrentRoundsCreated = json;
my_roundCount = Object.keys(my_CurrentRoundsCreated).length
my_Upcomings.roundsCreated = my_roundCount;
my_RoundsList.push(my_Upcomings.roundsCreated)
console.log(my_RoundsList)
})
}
}

function getDisciplines(param, callback){
console.log("Now in get Disciplines")
$.getJSON(listReadyMatchesUrl, function getUpcomingMatches (json) {
my_Upcomings = json
console.log("my upcoming matches", my_Upcomings)
my_Upcomings.roundsCreated = {
"roundsCreated": "0"
}
})
callback()
}

//console.log:
//Now in get Disciplines
//check in now rounds will start
//start getRounds
//my input Upcomings array: Array[0]length: 0__proto__: Array[0]
//my upcoming matches [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

最佳答案

您的回调位置错误。这是正确的方法:

function getDisciplines(param, callback){
console.log("Now in get Disciplines")
$.getJSON(listReadyMatchesUrl, function getUpcomingMatches (json) {
my_Upcomings = json
console.log("my upcoming matches", my_Upcomings)
my_Upcomings.roundsCreated = {
"roundsCreated": "0"
}
callback(); <-- Notice this line INSIDE the $.getJSON callback
});
}

注意:$.getJSON 的回调也可以是匿名的,如下所示:$.getJSON(listReadyMatchesUrl, 函数 (json) {}

关于javascript - JavaScript 中的匿名回调无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520753/

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