javascript - 强制循环等待两个函数顺序运行
问题描述
我有两个必须在循环中顺序调用的函数,在代码中将循环 3 次。在第二个函数中,我有一些动画,但我不知道如何让循环等待第二个函数的动画结束,以便循环进入下一次迭代。
循环功能
function startGame(){
emptyTab();
$("#movimentos-text").html(0)
$('.time').show()
$('.painel-tabuleiro').show();
$(".btn-reinicio").text("Reiniciar")
for(var i = 0; i < 3; i ++){
generateRandomCandys()
emptyElements()
}
}
第一个功能
function generateRandomCandys(){
var elements = $(".painel-tabuleiro").children("div");
for (var i = 1; i <= elements.length; i++) {
for (var j = elements[i-1].childElementCount; j < 7; j++) {
//... some logic
}
}
}
}
第二个功能
function emptyElements(){
// ... some logic
$(".equalElement").fadeOut()
$(".equalElement").fadeIn()
$(".equalElement").fadeOut()
$(".equalElement").fadeIn()
$(".equalElement").fadeOut(function() {
$(".equalElement").remove()
})
}
我已经尝试过使用 async 和 await、promise、interval 和 timeout 但没有任何效果。我想知道如何做到这一点:
for(var i = 0; i < 3; i ++){
run first: generateRandomCandys()
run second: emptyElements()
wait the emptyElements() animations finish to increase i
}
解决方案
如果您可以使用,await
那么您可以链接 jQuery.promise()
方法,如下所示:
async function startGame(){
//^^^^
emptyTab();
$("#movimentos-text").html(0)
$('.time').show()
$('.painel-tabuleiro').show();
$(".btn-reinicio").text("Reiniciar")
for(var i = 0; i < 3; i ++){
generateRandomCandys()
await emptyElements()
//^^^^^
}
}
第二个功能:
async function emptyElements(){
//^^^^
return $(".equalElement").fadeOut().fadeIn().fadeOut().fadeIn().fadeOut()
//^^^^
.promise().then(()=> $(".equalElement").remove())
//^^^^^^^^^^^^^^^^
}
推荐阅读
- typescript - 对于带返回接口的类型函数,允许具有非接口的属性
- scala - aiTcpListener - 端点上的 TCP 通道绑定失败 [/127.0.0.1:2551] java.net.BindException: [/127.0.0.1:2551] 地址已在使用中
- python - 如何将数据框中的两个特定列转换为 numpy 数组?
- java - 启用 schedulerSupport 将 activemq 代理置于从模式等待获取锁
- java - 无法使用 intellij jupiter 运行测试
- python-3.x - 如何在 function_B 中调用 function_A 以获得 function_A 返回
- vba - 在 MS Access 中编辑(按用户)多对多
- java - 像 HHH000412 或 HCANN000001 这样的前缀是什么意思?
- javascript - 使用forloop的Javascript数组,奇数和偶数超出了我设置的范围
- wpf - WPF 固定文档溢出