Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打破nodejs中的循环_Javascript_Node.js_Protractor - Fatal编程技术网

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,如何获得在承诺之外添加到数组等位元素中的列表的所有元素?