gpt4 book ai didi

javascript - for循环可以等到其中的函数执行完毕吗?

转载 作者:行者123 更新时间:2023-11-30 08:34:10 24 4
gpt4 key购买 nike

我正在构建一个 Simon 游戏,并且为每个新回合构建了一个函数:

var game = [];
var squares = ["green", "red", "blue", "yellow"];

var newRound = function() {
// adds a new round to the end of the game array
game.push(squares[Math.floor(Math.random() * squares.length)]);

// for loop to run through the game array
for (var x = 0; x < game.length; x++) {
playButton(game[x]);
}
}

然后,我构建了另一个函数来控制每次方 block 被用户击中或在我的 for 循环中循环时的动画和声音

var playButton = function(color){
$("#"+color).addClass(color+"--active active", 300, function(){
$("#audio-"+color).trigger('play');
$("#"+color).removeClass(color+"--active active", 300)
});

现在,我的 for 循环只是一次循环遍历所有动画和声音。如何让 for 循环等待 playButton 函数完成执行后再循环?

code sample on CodePen

最佳答案

您可以将 for 循环转换为一个递归函数,该函数播放当前按钮,然后在所有动画完成后尝试播放下一个按钮。像这样的东西:

var newRound = function() {
// adds a new round to the end of the game array
game.push(squares[Math.floor(Math.random() * squares.length)]);

// start playing from the first button
playButton(game, 0);
}

function playButton(game, index) {
if (index < game.length) { // if this button exists, play it
var color = game[index];
$("#" + color).addClass(color + "--active active", 300, function() {
$("#audio-" + color).trigger('play');
$("#" + color).removeClass(color + "--active active", 300, function() {
playButton(game, index + 1); // once this button was played, try to play the next button
});
});
}
}

关于javascript - for循环可以等到其中的函数执行完毕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551873/

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