javascript - Promise() 在动画完成之前不会延迟功能的问题

标签 javascript promise css-animations fadeout

我已经阅读了如何使用 promise(); 但似乎无法让它在执行我的 promise 函数之前播放动画,目前它运行 3 个游戏然后突然隐藏了所有元素,我是否遗漏了一些 promise api 所需的代码?

function runTheGames(){
var myEvent = function(){
       $('.board2').fadeOut({duration : "slow"});
       $('.board').fadeOut({duration : "slow"});
       $('.control').fadeOut({duration: "slow"});
       $("h2").fadeOut({duration: "slow"});
       $("h3").fadeOut({duration: "slow"});
    }
  $.when(myEvent()).promise().done(function(){
        isTraining = true;
        var xPlayer = new AI("master");
        var oPlayer = new AI("menace");
        if(isTraining === true){
            for(var count = 0; count < 3; count++){
                var training = new Training(xPlayer, oPlayer);
                xPlayer.plays(training);                     
                oPlayer.plays(training);
                training.start();
            }
         }
         isTraining = false;
         $(".cell").html("");
         $(".bead").html("");
         console.log("FINISHED TRAINING");
     });
}

最佳答案

您可以使用 jquery 动画 API 通过为您的动画提供回调函数来实现此目的。

var myEvent = function(){
    $('.board2').fadeOut("slow");
    $('.board').fadeOut({"slow");
    $('.control').fadeOut("slow");
    $("h2").fadeOut("slow");
    $("h3").fadeOut("slow", function() {
        // animations are completed here
        afterEvent();
    });
};

var afterEvent = function() {
    isTraining = true;
    var xPlayer = new AI("master");
    var oPlayer = new AI("menace");
    if(isTraining === true){
        for(var count = 0; count < 3; count++){
            var training = new Training(xPlayer, oPlayer);
            xPlayer.plays(training);                     
            oPlayer.plays(training);
            training.start();
        }
    }
    isTraining = false;
    $(".cell").html("");
    $(".bead").html("");
    console.log("FINISHED TRAINING");
};

希望对您有所帮助!

关于javascript - Promise() 在动画完成之前不会延迟功能的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43455852/

相关文章:

javascript - Angular printjs : ERROR TypeError: Object(. ..) 不是函数

javascript - 如何以编程方式从网络选项卡中捕获查询字符串参数

css - 使用 CSS 过渡动画最大高度

javascript - 如何在 SailsJS/Waterline 中使用 Model.query() 和 Promise?

javascript - 拒绝不与 promise 链式工作

jquery - 将动画复选框添加到 Bootstrap 表单检查

具有动态高度的元素上的 CSS 高度动画

javascript - jQuery 移动对象

javascript - HTML5 显示具有特定内容的 localStorage 元素

node.js - 在 lambdas/arrow-functions 中抛出没有大括号的错误