javascript - 突然退出循环

标签 javascript jquery

让我们想象一下下面的代码:

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/

相关文章:

jquery - 在页面导航时使用 jQuery BlockUI 插件(卸载事件)

javascript - 当图像到达容器边界时停止移动

javascript - 在表的每一行中查找下拉菜单的选定值

javascript - 捕获 Alt+F+P jquery

java - 在同一页面中的 javascript 中检索 arraylist 的值

javascript - Jquery Mobile Navbar 轮廓/边框颜色

javascript - Jquery PHP Mysql 表单提交不起作用

javascript - 更新 Like 按钮而不刷新页面

javascript - CasperJS:亚马逊无限验证码登录

javascript - 行政部分设计决策