Просто чтобы показать разницу между экспортируемой переменной, находящейся в среде (env), и неэкспортируемой переменной, не находящейся в среде:
Если я это сделаю:
$ MYNAME=Fred
$ export OURNAME=Jim
, тогда в env появляется только $ OURNAME. Переменная $ MYNAME отсутствует в env.
$ env | grep NAME
OURNAME=Jim
, но переменная $ MYNAME существует в оболочке
$ echo $MYNAME
Fred
Мне удалось решить мою проблему с помощью цикла for. Моя внешняя функция теперь выглядит следующим образом:
MyExternalFunction(numOfLines) {
var totalNumToAck =0;
var deferred = protractor.promise.defer();
browser.wait(function () {
return SomeElementThatIKnowIsPresent.isPresent();
}, 50000).then(function () {
for (var i = 0; i < numOfLines; ++i) {
//code to analyze the page
if (somecondition) {
totalNumToAck++;
}
}
}).then(function () {
console.log('found' + totalNumToAck + 'elements');
deferred.fulfill(totalNumToAck);
});
return deferred.promise;
};
Это гарантирует, что цикл for завершится и только тогда deferred.fulfill (totalNumToAck); случится. Спасибо за всех, кто помог.
Вы можете попробовать следующую попытку
MyExternalFunction(numOfLines) {
return new Promise(function (resolve, reject) {
var totalNumToAck = 0;
for (var i = 0; i < numOfLines; ++i) {
//code to analyze the page
if (somecondition) {
totalNumToAck++;
}
}
console.log('found' + totalNumToAck + 'elements');
resolve(totalNumToAck);
})
};