如何对函数进行延迟,但不';不要在Javascript中再次执行

如何对函数进行延迟,但不';不要在Javascript中再次执行,javascript,Javascript,我正在用Javascript制作一个射击游戏:玩家将射出一颗子弹,并在再次射出另一颗之前延迟2秒。我不知道怎么耽搁。使用setTimeout,它有一个延迟,但会自动调用该函数。有人能帮我吗?如果我理解这个问题,您需要一个系统来阻止调用函数,比如说shootBullet(),直到延迟完成。最简单的方法是使用全局变量和setTimeout: var canShoot = true; function shootBullet() { if (canShoot) { //Sho

我正在用Javascript制作一个射击游戏:玩家将射出一颗子弹,并在再次射出另一颗之前延迟2秒。我不知道怎么耽搁。使用
setTimeout
,它有一个延迟,但会自动调用该函数。有人能帮我吗?

如果我理解这个问题,您需要一个系统来阻止调用函数,比如说
shootBullet()
,直到延迟完成。最简单的方法是使用全局变量和
setTimeout

var canShoot = true;

function shootBullet() {
    if (canShoot) {
        //Shoot bullet
    }
    canShoot = false;
    setTimeout(function() {
        canShoot = true;
    }, 2000);
}

如果我没有误解的话,在本例中,您需要一个名为“去盎司”的函数,如下所示:

function debounce(func, wait) {
    let timeout;
    return () => { //create closure
      let context = this,
        args = arguments;

      let excuteFunction = () => {
        func.apply(context, args)
      }
      clearInterval(timeout);
      timeout = setTimeout(excuteFunction, wait);
    };
  }
func是您的拍摄功能时,wait是延迟时间

你可以阅读更多关于去盎司技术的文章


或者您可以使用Lodash中的内置去盎司功能:

请添加您当前的代码。非常感谢,这正是我需要的