【发布时间】:2017-03-29 17:26:01
【问题描述】:
我试图让两件事同时发生,但只允许其中一件。如果某些事情已经发生,我需要能够完全阻止它并让另一个接管。这是我的例子:
https://jsfiddle.net/mortenmoulder/5eceLvgu/
function log(text, interval, amount) {
(function myLoop(i) {
timer = setTimeout(function() {
console.log(text);
if (--i) myLoop(i);
}, interval)
})(amount);
}
$("#first").on("click", () => log("first", 500, 10));
$("#second").on("click", () => log("second", 500, 10));
单击第一个按钮,它将console.log("first") 10 次,延迟 500 毫秒。当您单击第二个按钮时,它应该取消第一个并启动console.log("second") 而不会被中断(除非您单击第一个按钮)。
我该怎么做?我需要延迟循环,并且我需要一个函数来执行此操作(因此每个按钮都没有很多 if 语句,因为有很多按钮)。
【问题讨论】:
-
也许clearTimeout() 会有所帮助。
标签: javascript node.js