javascript - 同时仅运行该函数一次

标签 javascript

我遇到以下问题。首先是我到目前为止的代码:

function Auktionator() {
this.versteigern = function(objekt) {
      for(var i = 1; i <=3; i++) {
         setTimeout(function(x) { return function() { console.log(objekt + " zum " + x); }; }(i), 1000*i);
     }
};}

现在我希望只有一个 Auktionator 对象可以同时运行该函数,但我不知道该怎么做。

最佳答案

跟踪运行的超时次数并使用保护子句来防止并发运行。

function Auktionator() {
    this.versteigern = function (objekt) {
        if (Auktionator.LOCKS > 0) {
            console.log('running');
            return;
        }

        for (var i = 1; i <= 3; i++) {
            Auktionator.LOCKS++;
            setTimeout(function (x) {
                return function () {                        
                    console.log(objekt + " zum " + x);
                    Auktionator.LOCKS--;
                };
            }(i), 1000 * i);
        }
    };
}

Auktionator.LOCKS = 0;

new Auktionator().versteigern()
new Auktionator().versteigern()

关于javascript - 同时仅运行该函数一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33828749/

相关文章:

javascript - 选择菜单,使用 JQuery 转到选择的 url?

javascript - 是否可以从数据库中的多个位置订阅 Firebase onDisconnect() 事件?

javascript - 从 Javascript 中的对象中删除过多重复项的最佳方法是什么?

JavaScript 无法将某些 `.class` 应用于特定的 `span id=` - 为什么?

javascript - 访问数组中的对象值

javascript - 如何传播主干 stopListening 以防止内存泄漏?

javascript - 像普通子方法一样通过子对象访问父原型(prototype)方法

javascript - 传单.js : How to remove multiple layers from map

javascript - 对默认变量使用解构赋值和其余语法

javascript - 让这个计时器从一个按钮开始