gpt4 book ai didi

javascript - 从匿名函数中中断 while 循环

转载 作者:行者123 更新时间:2023-12-01 03:05:20 25 4
gpt4 key购买 nike

我是 javascript 新手,我的背景是 python 和 ruby​​,我在处理 javascript 匿名函数时遇到问题,我的问题如下:

我的页面中有一个元素具有属性值(true/false),我需要继续执行操作,直到该属性更改值。

我尝试过的代码如下,正如您所猜测的,如果result.value == truebreak将不会退出循环...任何知道我的方向是否正确?

var counter = 0;
while (counter < 5) {
this
.click('#someelementid')
counter++;
this
.getAttribute('#someelementid', 'disabled', function(result) {
if (result.value == 'true') {
this.break;
}
}.bind(this));
this.api.pause(1000);
};

我的假设是,通过绑定(bind)它,我可以访问 while block ?如果我错了,请纠正我。

最佳答案

您是否尝试过将代码更改为如下所示?

var counter = 0;
var arr = [1, 2, 3, 4, 5];
while (counter < 5) {
arr.forEach(
(element) => {
if (counter < 5) { // if you don't have this it will print all 5, else it prints only 3
console.log('Element value:', element);
}
if (element == 3) {
counter = 5;
}
}
);
}

发生的事情是这样的:

当您进入while循环时,它将进入forEach循环并开始迭代,当到达element == 3时,它将设置counter5,但它仍然必须完成当前的 forEach 循环,一旦完成就不会再执行另一个 while 循环因此退出它。

因此将您的代码更改为:

var counter = 0;
while (counter < 5) {
this
.click('#someelementid')
counter++;
this
.getAttribute('#someelementid', 'disabled', function(result) {
if (result.value == 'true') {
counter = 5; // This should do the trick (without 'this')
}
}.bind(this));
this.api.pause(1000);
};

关于javascript - 从匿名函数中中断 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46237870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com