Значение хранится внутри цикла, не отражаясь вне цикла

fnReturnElements: function(pathElems ){
    var strArray= new Array();
    selenium.waitForElements(pathElems).then(function(elements) {


            for(i=0; i< elements.length;i++){

                var a= selenium.getText(elements[i]);

                    a.then(function(value){
                        strArray.push(value);
                    });
            }

    });
    console.log (strArray +" func");
    return strArray;
}

Я получаю пустым в консоли для strArray вне цикла. Какое-то отношение к обещаниям? Здесь "элементы" - это список веб-элементов.

После просмотра других постов о обратных вызовах и асинхронных функциях я внес следующие изменения:

fnReturnElements: function(xpath){
    var strArray= new Array();

    return selenium.waitForElements(xpath).then(function(elements) {            
            for(i=0; i< elements.length;i++){
                var a= selenium.getText(elements[i]);

                    a.then(function(value){
                        i++;
                        strArray.push(value);
                        console.log (i + value);
                        if ( i=== (elements.length*2 )){
                            return strArray;                                
                        }   
                    });                     
            }               
    });             
}

Вызов функции как -

    fnReturnElements ( xpath).then(function(value) {    
                        console.log (value);
    }); 

Но все еще становится неопределенным. Строка [a.then(function(value)]) с возвратом перед ней также не меняет вывод. Любые указатели, что я здесь делаю неправильно?

0 ответов

Другие вопросы по тегам