从匿名函数中中断for循环
Break a for loop from within an anonymous function
我正试图从嵌套的匿名函数中中断一个for循环(标记),如下所示:
function ajax(iteration, callback) {
var rtrn, xh;
if (window.XMLHttpRequest) {
xh = new XMLHttpRequest();
} else {
xh = new ActiveXObject("Microsoft.XMLHTTP");
};
xh.onreadystatechange = function() {
if (xh.readyState == 4 && xh.status == 200) {
callback(xh.responseText);
};
};
xh.open("GET", "file.php?i=" + iteration, true);
xh.send();
};
var atk_delay = 100;
loop:
for(i = 1; i <= 40; i++) {
var to = atk_delay * i;
setTimeout(
function() {
ajax(i, function(responseText) {
var div = document.getElementById("combat");
div.innerHTML += responseText;
var arrRt = responseText.split("::");
if(arrRt[0] == "stop") {
break loop;
};
});
},
to);
};
我真的不知道怎么解决这个问题。显然,问题是它找不到标签。我该如何解决此问题?
所以我解决了它!谢谢你们的帮助!你让我意识到我需要一种完全不同的方法!
function ajax(callback) {
var rtrn, xh;
if (window.XMLHttpRequest) {
xh = new XMLHttpRequest();
} else {
xh = new ActiveXObject("Microsoft.XMLHTTP");
};
xh.onreadystatechange = function() {
if (xh.readyState == 4 && xh.status == 200) {
callback(xh.responseText);
};
};
xh.open("GET", "file.php", true);
xh.send();
};
var atk_delay = 100;
function roll() {
ajax(function(responseText) {
var div = document.getElementById("combat");
div.innerHTML += responseText;
var arrRt = responseText.split("::");
if(arrRt[0] == "cont") {
setTimeout(roll, atk_delay);
};
});
};
setTimeout(roll, atk_delay);
通常情况下,您要做的是在循环的每次迭代后都有一个可访问的变量,该变量将指示您是否可以中断。这将在匿名函数中设置。
然而,在您的特定情况下,由于您正在调用setTimeout
,所以在您甚至可以设置值时,循环的执行可能已经完成。setTimeout
将函数调度为稍后执行(以毫秒为单位)。
如果某个变量标记为已完成,则可以使用该变量提前退出匿名函数。
调试匿名块的简单方法-在要检查的行之前显式调用调试器。
function foo().then(s => {
... some code
debugger // here your code will break.
someVariableIwantToExamine
}
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从匿名函数中中断for循环
- 如何在中断之前遍历此 for 循环中的所有城市?现在它只是迭代一个
- 我如何编写一个 Javascript for 循环,以便在满足第一个条件时中断
- if语句中的中断语句,该语句包含在嵌套的for循环中
- 在执行 ajax 调用返回错误时中断 jquery for 循环
- 在 for 循环中断中的 JavaScript 切换;冲突
- 如果未选中复选框,则中断for循环
- 这个for循环如何决定何时中断循环
- switch/if语句中断了for循环
- getElementById()中断for循环Javascript
- 量角器在for循环中中断while
- 当遇到不存在的图像时,For循环中断
- 在闭包内中断for循环
- 中断for循环并返回找到的结果
- 如何在jQuery中中断for循环
- 如何在javascript中中断for循环
- JavaScript范围,从函数回调中断for循环
- 在JavaScript中,立即中断for循环并切换大小写