Мне удалось решить мою проблему с помощью цикла 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); случится. Спасибо за всех, кто помог.