javascript - 强制循环等待两个函数依次运行

标签 javascript jquery animation async-await

我有两个函数必须在一个循环中按顺序调用,在代码中会循环 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())
                    //^^^^^^^^^^^^^^^^
}

关于javascript - 强制循环等待两个函数依次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234901/

相关文章:

javascript - 对象不支持属性或方法 Internet Explorer IE 11 上出现错误

android - ViewFlipper 3D-卡片-翻转

javascript - 对 Shopify's/cart/add.js 的 Ajax POST 请求始终返回错误回调函数

javascript - jquery固定位置 block ,切换到静态某个点

javascript - JavaScript 中数组为非 null,但 Ajax 后 PHP 的 $_POST 中数组为 null

javascript - 在每秒 td 中选择 span,它周围没有 anchor

java - 动画不适用于所有设备

javascript - 使用线性渐变(纯 CSS)实现动画跷跷板效果

javascript - 下拉菜单上的 jQuery 动画不稳定、缓慢且无响应

javascript - 我们如何在 JavaScript 中使用具有多个条件的三元运算符?