Значение хранится внутри цикла, не отражаясь вне цикла
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)]) с возвратом перед ней также не меняет вывод. Любые указатели, что я здесь делаю неправильно?