让我们想象一下下面的代码:
function DoSomethingHard(parameter1, parameter2, parameter3){
// Do Something Hard Here
}
var i;
for(i = 0; i <= stuff.length; i++) {
// "stuff" is an array
DoSomethingHard(stuff[i].something1, stuff[i].something2, stuff[i].something3);
}
$( "#button_to_cancel" ).click(function() {
//something to cancel
});
- 假设数组“stuff”有 100 个位置,那么 for 循环将运行 100 次,即执行 100 次“Do Something Hard”。
- 我们还考虑“DoSomethingHard”运行大约需要 5 秒 完全。
我的问题是:如何管理取消“DoSomethingHard”?比如已经运行了50次,如何通过按钮取消后续的执行?我的尝试没有成功,它总是以运行整个循环结束......
提前致谢:)
最佳答案
Javascript 是单线程的,for 循环会一直执行到结束。我会做这样的事情来为取消留出时间。
function DoSomethingHard(param){
//do something
}
var i = 0;
var loopInterval = setInterval(function() {
if (i >= stuff.length) {
clearInterval(loopInterval);
return;
}
DoSomethingHard(stuff[i]);
i++
}, 10);
$( "#button_to_cancel" ).click(function() {
clearInterval(loopInterval);
});
关于javascript - 突然退出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42560478/