Javascript 打破nodejs中的循环
我有以下设置代码Javascript 打破nodejs中的循环,javascript,node.js,protractor,Javascript,Node.js,Protractor,我有以下设置代码 var ele = element(by.model(xpath)); var option = ele.isDisplayed().then(function(found) { ele.all(by.tagName('option')).then(function(options) { options.some(function(option) { option.getText().then(function doesOptio
var ele = element(by.model(xpath));
var option = ele.isDisplayed().then(function(found) {
ele.all(by.tagName('option')).then(function(options) {
options.some(function(option) {
option.getText().then(function doesOptionMatch(text) {
if (text == data.trim()) {
logger.debug("PASS--" + data.trim() + "--option selected");
return "PASS"; //not working
}
if (text != data.trim())
logger.debug("FAIL--" + data.trim() + "--option is Not selected");
});
});
});
}, function(err) {
logger.debug("FAIL--Exception caught in verifyDropdownSelectedValue--" + err);
});
我希望控件不在写return语句的循环中,但它不工作并继续迭代。这里是当我返回真实值时不退出的循环部分
options.some(function(option) {
option.getText().then(function doesOptionMatch(text) {
if (text == data.trim()) {
logger.debug("PASS--" + data.trim() + "--option selected");
return "PASS"; //not working
}
if (text != data.trim())
logger.debug("FAIL--" + data.trim() + "--option is Not selected");
});
});
根据on数组.some()
,如果回调函数返回true,它将退出循环
some()为中的每个元素执行一次回调函数
数组,直到它找到一个回调函数返回真实值(a
转换为布尔值时变为true的值)。如果是这样的话
元素时,some()立即返回true。否则,有些()
返回false
您的some-callback函数
不返回true,实际上它不返回任何内容。即使是返回“PASS”
值也是针对函数doesOptionMatch
的,而不是针对函数(选项)
的,后者是针对some()的回调
我将代码更改为下面这样的代码,它遍历getText()
values数组,并在匹配时返回true。工作如期进行
var ele = element(by.tagName('select'));
var option = ele.isDisplayed().then(function(found) {
ele.all(by.tagName('option')).getText().then(function(textValues) {
textValues.some(function(textValue) {
if (textValue == data.trim()) {
logger.debug("PASS--" + data.trim() + "--option selected");
return true;
}
if (textValue != data.trim())
logger.debug("FAIL--" + data.trim() + "--option is Not selected");
})
})
});
定义“不工作”;你具体期待什么?return
语句将从最内部的函数返回,该函数嵌套四层。另外,要了解代码中发生了什么也有点困难。如果我这样编写var-allegements=[];var option=ele.isDisplayed();它将数组等位元素的大小返回为0,如何获得在承诺之外添加到数组等位元素中的列表的所有元素?