使用SetTimeout延迟JavaScript中的函数

Web开发狼

我有一个检查游戏是否结束的功能,我想延迟一下,以便让用户有时间在通过屏幕查看游戏之前先查看每个答案是否正确。

在没有超时的情况下运行游戏时,它的检查工作正常,但是当我设置超时时,我得到一个错误,即函数调用不是函数。

setTimeout(function() {this.CheckGameOver();}, (5 * 1000)); 

设置超时的方式有问题吗?这是唯一的想法,因为该功能本身可以完美运行。

CheckGameOver: function() {
        // Check game over clause
        var c = this.View.children;

        if (this.players[0].answered == 13) { // Check if Player 1 won
            // Win the game
            gameStopped = true;
            isFirstQuestionSetup = true;

            if(this.PlayerCount == 1) {
                views.get('singlePlayerGame').transitionOut();
                clearInterval(this.cpu);
            } else {
                views.get('twoPlayerGame').transitionOut();
            }
            views.get('background').switchState(BACKGROUND_STATES.GAME_OVER);
            views.get('genericHud').switchState(HUD_STATES.MAIN_MENU);
            views.get('gameOver').transitionIn(this.players, this.GameType, this.Language);

        } 

        if (this.playerCount == 1) {
            if (this.cpuAnswered == 13) { // Check if CPU won
                // Lose the Game (Doh!)
                gameStopped = true;
                views.get('singlePlayerGame').transitionOut();
                clearInterval(this.cpu);
                views.get('background').switchState(BACKGROUND_STATES.GAME_OVER);
                views.get('genericHud').switchState(HUD_STATES.MAIN_MENU);
                views.get('gameOver').transitionIn(this.players, this.GameType, this.Language);
            }
        } else {
            if (this.players[0].answered == 13) { // Check if Player 2 won
                // Player 2 Wins
                gameStopped = true;
                views.get('twoPlayerGame').transitionOut();
                views.get('background').switchState(BACKGROUND_STATES.GAME_OVER);
                views.get('genericHud').switchState(HUD_STATES.MAIN_MENU);
                views.get('gameOver').transitionIn(this.players, this.GameType, this.Language);
            }
        }
    },
宝ao

thissetTimeout函数中的内容与您认为的无关。您可以使用es6箭头功能

setTimeout(() => {this.CheckGameOver();}, (5 * 1000)); 

或绑定thissetTimeout

setTimeout(function() {this.CheckGameOver();}.bind(this), (5 * 1000)); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SetInterval的函数的Javascript延迟使用setTimeout

来自分类Dev

JavaScript,Phaser:使用setTimeout调用函数-延迟不起作用

来自分类Dev

使用setTimeout(function,delay)的函数之间的JavaScript延迟

来自分类Dev

javascript settimeout更改函数调用延迟

来自分类Dev

JavaScript函数中的延迟循环

来自分类Dev

如何使用特定日期作为 setTimeout 函数的延迟

来自分类Dev

setTimeout 中的延迟

来自分类Dev

jQuery。使用setTimeout延迟

来自分类Dev

使用 setTimeout 延迟迭代

来自分类Dev

在 javascript 中的另一个 setTimeout 函数中使用 setTimeout

来自分类Dev

Javascript setTimeout不会触发延迟

来自分类Dev

JavaScript setTimeout不会触发延迟

来自分类Dev

在Javascript中使用setTimeout从数组调用函数

来自分类Dev

如何使用setTimeout参数调用javascript函数

来自分类Dev

settimeout之后无法使用Javascript函数

来自分类Dev

如何使用JavaScript延迟对数组中每个元素执行的函数?

来自分类Dev

如何使用JavaScript延迟对数组中每个元素执行的函数?

来自分类Dev

使用setTimeout()函数从localStorage中删除项目

来自分类Dev

如何使用setTimeout在悬停函数中访问$(this)

来自分类Dev

如何在JavaScript中的一个函数中使用setTimeOut和setInterval

来自分类Dev

浏览器在使用javascript中的SetTimeOut来运行更新UI的函数时冻结

来自分类Dev

函数的参数,依次用作javascript中的setTimeout函数的参数

来自分类Dev

是什么确定使用promise或setTimeout的延迟函数的调用顺序?

来自分类Dev

Javascript:在另一个延迟函数中调用延迟函数

来自分类Dev

延迟函数调用中的延迟函数调用

来自分类Dev

停止由setTimeout延迟的Javascript setInterval

来自分类Dev

setTimeout中定义的函数可以访问JavaScript中的外部变量

来自分类Dev

JavaScript清除“延迟”函数中引用的(本地)对象

来自分类Dev

使用setTimeout()允许出现“正在加载”弹出窗口时延迟长度的Javascript经验法则

Related 相关文章

  1. 1

    使用SetInterval的函数的Javascript延迟使用setTimeout

  2. 2

    JavaScript,Phaser:使用setTimeout调用函数-延迟不起作用

  3. 3

    使用setTimeout(function,delay)的函数之间的JavaScript延迟

  4. 4

    javascript settimeout更改函数调用延迟

  5. 5

    JavaScript函数中的延迟循环

  6. 6

    如何使用特定日期作为 setTimeout 函数的延迟

  7. 7

    setTimeout 中的延迟

  8. 8

    jQuery。使用setTimeout延迟

  9. 9

    使用 setTimeout 延迟迭代

  10. 10

    在 javascript 中的另一个 setTimeout 函数中使用 setTimeout

  11. 11

    Javascript setTimeout不会触发延迟

  12. 12

    JavaScript setTimeout不会触发延迟

  13. 13

    在Javascript中使用setTimeout从数组调用函数

  14. 14

    如何使用setTimeout参数调用javascript函数

  15. 15

    settimeout之后无法使用Javascript函数

  16. 16

    如何使用JavaScript延迟对数组中每个元素执行的函数?

  17. 17

    如何使用JavaScript延迟对数组中每个元素执行的函数?

  18. 18

    使用setTimeout()函数从localStorage中删除项目

  19. 19

    如何使用setTimeout在悬停函数中访问$(this)

  20. 20

    如何在JavaScript中的一个函数中使用setTimeOut和setInterval

  21. 21

    浏览器在使用javascript中的SetTimeOut来运行更新UI的函数时冻结

  22. 22

    函数的参数,依次用作javascript中的setTimeout函数的参数

  23. 23

    是什么确定使用promise或setTimeout的延迟函数的调用顺序?

  24. 24

    Javascript:在另一个延迟函数中调用延迟函数

  25. 25

    延迟函数调用中的延迟函数调用

  26. 26

    停止由setTimeout延迟的Javascript setInterval

  27. 27

    setTimeout中定义的函数可以访问JavaScript中的外部变量

  28. 28

    JavaScript清除“延迟”函数中引用的(本地)对象

  29. 29

    使用setTimeout()允许出现“正在加载”弹出窗口时延迟长度的Javascript经验法则

热门标签

归档