我有一个函数可以让 OpenLayer 标记闪烁三次。仅显示控制台消息的简化版本:
function blink_three_times(layername){
var x = 0;
setTimeout(function() {
blink_in = setInterval(function() {
x = x+1;
if ( x === 3) {clearInterval(blink_in)};
console.log(layername + ' is visible');
}, 500);
}, 250);
blink_out = setInterval(function() {
if (x === 2) {clearInterval(blink_out)};
console.log(layername + ' is invisible');
}, 500);
};
它工作正常,但如果在一次完成之前启动多次,计数器 (x) 会超过 3 并且间隔不会停止。我怎样才能避免这种情况?
最佳答案
那是因为您在全局范围内拥有函数 blink_in
和 blink_out
。当您第二次调用它时,它会覆盖函数的定义。
使用 var 定义它们以使它们成为本地的。
var blink_in = setInterval(function() {..})
和
var blink_out = setInterval(function() {..})
关于javascript - 非同步启动 Javascript 间隔并在运行 3 次后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402867/