如果内部if条件满足,如果它是一个异步的javascript,如何从每个循环退出

时间:2017-02-06 16:31:28

标签: javascript angularjs protractor

我希望退出for for循环,文本包含ImageResizingOrg。如果它是同步的,我可以很容易地做到这一点。由于javascript是异步的,我需要解决这个问题。任何解决方案

organizationLocator.each(function(element) {

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

                    FunctionLibrary.click(element, organizationName);



                }
            })

        })

2 个答案:

答案 0 :(得分:1)

要解决循环问题,请使用filter功能。假设您的 if(error.hasOwnProperty('rejection')) { error = error.rejection; } 是一个元素数组,您可以这样做:

organizationLocator

答案 1 :(得分:-2)

你可以通过在“then”方法中传递每个元素来使你的循环“同步”。

通过这样做,您可以随时停止循环。

var inc = 0,
    doLoop = function (element) {

        FunctionLibrary.getText(element, organizationName).then(function (text) {
            logger.info(text);

            inc += 1;

            if (text.includes('ImageResizingOrg')) {
                FunctionLibrary.click(element, organizationName);
            } else if (inc < organizationLocator.length) {
                doLoop(organizationLocator[inc]);

            }
        });

    };

doLoop(organizationLocator[inc]);