我遇到以下问题。首先是我到目前为止的代码:
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/