Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 &引用;“非法中断声明”;正在出现。有人能提出解决这个问题的理由吗_Javascript_Angularjs_Automation_Jasmine_Protractor - Fatal编程技术网

Javascript &引用;“非法中断声明”;正在出现。有人能提出解决这个问题的理由吗

Javascript &引用;“非法中断声明”;正在出现。有人能提出解决这个问题的理由吗,javascript,angularjs,automation,jasmine,protractor,Javascript,Angularjs,Automation,Jasmine,Protractor,“非法中断声明”正在出现。有人能提出解决这个问题的理由吗 this.selectOrganization = function() { organizationLocator.each(function(element) { FunctionLibrary.getText(element, organizationName).then(function(text) { logger.info(text);

“非法中断声明”正在出现。有人能提出解决这个问题的理由吗

this.selectOrganization = function() {

        organizationLocator.each(function(element) {

            FunctionLibrary.getText(element, organizationName).then(function(text) {
                logger.info(text);
                if (text.includes('ImageResizingOrg')) {

                    FunctionLibrary.click(element, organizationName);

                    break;

                }
            })

        })
    };
用于组合for each循环的每个迭代,并在希望打破循环时拒绝承诺

var promises = [];

organizationLocator.each(function(element) {
    promises.push(FunctionLibrary.getText(element, organizationName).then(function(text) {
        logger.info(text);
        if (text.includes('ImageResizingOrg')) {
            FunctionLibrary.click(element, organizationName);
            return Promise.reject(false);
        }
    }));
});

return Promise.all(promises);

您不能中断它模拟本机
forEach
方法行为的
每个
方法,本机
forEach
除了抛出异常之外,不提供中断循环的功能

请参阅以下引文:

除了抛出异常之外,没有其他方法可以停止或中断forEach()循环。如果需要这种行为,forEach()方法是错误的工具

提前终止可通过以下方式完成:

  • 简单的循环

  • 循环的…的循环

  • Array.prototype.every()

  • Array.prototype.some()

  • Array.prototype.find()

  • Array.prototype.findIndex()

其他数组方法:every()、some()、find()和findIndex()使用返回truthy值的谓词测试数组元素,以确定是否需要进一步迭代

但有一个解决方案是method,它使用回调函数的返回值来迭代下一个元素

each
对数组中的每个元素执行一次提供的
回调
函数,直到找到其中一个
callback
返回假值。如果找到这样的元素,
every
方法立即返回false

数组示例。每个
方法:

var orgs=['NSO','CRY India','WHO','ImageResizingOrg','Unicef'];
var returnval=true;
组织每个(函数(文本){
if(text.includes('imagesizengorg')){
//在这里,您可以像在代码中一样执行任何操作,如触发单击事件
returnval=false;
}
console.log(文本);
返回值;

});
break
s应该在循环中(
for
while
do while
)您是否尝试过
返回false
?从技术上讲,循环代码在
each
函数下运行,您显示的代码是一个承诺/回调。您看过使用数组吗?each?@ibrahimmahrir我只是忘记了它只能与循环一起使用。我的孩子你能调查一下吗
var promises = [];

organizationLocator.each(function(element) {
    promises.push(FunctionLibrary.getText(element, organizationName).then(function(text) {
        logger.info(text);
        if (text.includes('ImageResizingOrg')) {
            FunctionLibrary.click(element, organizationName);
            return Promise.reject(false);
        }
    }));
});

return Promise.all(promises);