如何停止具有相同名称的嵌套超时?
How to stop nested timeOut with same names?
我正在尝试使用具有相同名称的嵌套 timeOut
,这实际上就像一个循环,而不是完全一样。
我尝试使用这个例子:
let i = 1;
setTimeout(function run() {
func(i);
setTimeout(run, 100);
}, 100);
来自这个 link。
正如您在 link 中看到的,我无法使用 interval
和 loop
。
这是我的实际代码:
let i = 0;
let x = setTimeout(async function run() {
if(i == 2) {
// I want to stop my x here completly
console.log(i)
clearTimeout(x);
}
try {
//some code here e.g:
console.log(10)
} catch (err) {
//some other code here e.g:
console.log(err)
}
i++;
x = setTimeout(run, 800);
}, 800);
我的输出:
10
10
2
10
10
... //never stops
我也看到了这个link,但不是我的情况
任何人都可以做点什么让我可以完全停止 x
吗?
提前致谢。
因为当您 clearTimeout
时,您不会被 return
阻止。所以你的超时将设置另一个超时 x = setTimeout(run, 800);
。您需要做的就是 return
您的 clearTimeout(x)
停止超时功能。
return clearTimeout(x);
在您的代码中,我看不出您需要清除超时的任何理由。超时运行 仅一次。所以如果你执行它。完成了。
您不需要超时引用,因为如果在函数内部引用无效,因为调用了超时。然后你需要停下来 return.
let i = 0;
setTimeout(async function run() {
if (i == 2) {
console.log(i)
return
}
try {
//some code here e.g:
console.log(10)
} catch (err) {
//some other code here e.g:
console.log(err)
}
i++;
setTimeout(run, 800);
}, 800);
我正在尝试使用具有相同名称的嵌套 timeOut
,这实际上就像一个循环,而不是完全一样。
我尝试使用这个例子:
let i = 1;
setTimeout(function run() {
func(i);
setTimeout(run, 100);
}, 100);
来自这个 link。
正如您在 link 中看到的,我无法使用 interval
和 loop
。
这是我的实际代码:
let i = 0;
let x = setTimeout(async function run() {
if(i == 2) {
// I want to stop my x here completly
console.log(i)
clearTimeout(x);
}
try {
//some code here e.g:
console.log(10)
} catch (err) {
//some other code here e.g:
console.log(err)
}
i++;
x = setTimeout(run, 800);
}, 800);
我的输出:
10
10
2
10
10
... //never stops
我也看到了这个link,但不是我的情况
任何人都可以做点什么让我可以完全停止 x
吗?
提前致谢。
因为当您 clearTimeout
时,您不会被 return
阻止。所以你的超时将设置另一个超时 x = setTimeout(run, 800);
。您需要做的就是 return
您的 clearTimeout(x)
停止超时功能。
return clearTimeout(x);
在您的代码中,我看不出您需要清除超时的任何理由。超时运行 仅一次。所以如果你执行它。完成了。
您不需要超时引用,因为如果在函数内部引用无效,因为调用了超时。然后你需要停下来 return.
let i = 0;
setTimeout(async function run() {
if (i == 2) {
console.log(i)
return
}
try {
//some code here e.g:
console.log(10)
} catch (err) {
//some other code here e.g:
console.log(err)
}
i++;
setTimeout(run, 800);
}, 800);