Javascript:单击按钮时退出 javascript 循环

标签 javascript loops label

我有一个 javascript 循环,它通过 ajax 调用 php 函数。我需要通过单击按钮来停止该循环。 我尝试使用标签,但这是不可能的:

labelName:
for (var counter = 0; counter <= 1000; counter++) {
    ...
    ajax call
    ...
}

$('#button-stop').click(function(event) {
    event.preventDefault();
    break labelName;
});

但这会产生错误“SyntaxError label not found”。事实上,只有当我输入“break labelName;”时进入循环错误消失。但是如果我将其放入点击功能中,则无法再次识别标签。

我怎样才能做到这一点?还有其他方法可以通过按钮交互来打破循环吗? 谢谢。

最佳答案

您无法通过这种方式停止循环。当按钮被点击时,“点击事件”被放入事件循环中,只有在循环结束后才会执行。因此,在您的变体中,无论如何都会将一千个请求发送到服务器。

如果你想控制向服务器发送消息,最好使用间隔:

var sender = setInterval(function() {
    //ajax here
}, 1000);

$('#button-stop').click(function(event) {
    clearInterval(sender);
});

关于Javascript:单击按钮时退出 javascript 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14066714/

相关文章:

javascript - 添加到可观察数组时, knockout 模板不会更新列表

javascript - html 中的条件图像库

javascript - 在 ajax 调用之前替换按钮,然后在调用之后还原

excel - 使用 2 张纸,如果单元格值匹配,则从另一列中引入日期值

python - 格式化 pandas y 轴以显示时间而不是总秒数

javascript - React 新手,关于使用所有 JS 而不是 HTML 的问题/好处/缺点?

java - 使 While 语句为 True(从另一个类调用方法)

c++ - OpenMP 还原同步错误

gwt - 如何在 GWT 标签中换行很长的文本行?

wpf - 在 WPF 中使用 FindName() 找不到动态生成的控件