Невозможно обновить переменную из функции Javascript - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь обновить переменную rowNumber из rows.each (), однако, когда я впоследствии его укачиваю, он по-прежнему имеет значение null.Что я делаю неправильно?Я даже пытался определить var rowNumber «выше», тот же результат.

var licenceNumber = 233521673;

it('should open created Driver Licence', function() {
    var rowNumber = null;

    var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));

    rows.each(function(element, index) {
        element.getText().then(function (text) {
            if (text.includes(licenceNumber)) {
                rowNumber = index;
                return true;
            }
        });
    });
    console.log('rowNumber = ', rowNumber);
});

1 Ответ

0 голосов
/ 25 апреля 2018

Используйте Promise.all , чтобы подождать, пока все обещания не будут решены:

var licenceNumber = 233521673;

it('should open created Driver Licence', function() {
    var rowNumber = null;

    var rows = element.all(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index'));

    var promises = [];

    rows.each(function(element, index) {
        var promise = element.getText().then(function (text) {
            if (text.includes(licenceNumber)) {
                rowNumber = index;
            }
        });
        promises.push(promise);
    });

    return Promise.all(promises).then(function () {
        console.log('rowNumber = ', rowNumber);
    });
});

Обратите внимание, что обещание, связанное с Promise.all, также возвращается в Mocha. Это важно, поскольку он сообщает Mocha, что этот тест асинхронный и не будет считаться завершенным, пока возвращенное обещание не разрешит или не отклонит. Подробнее об этом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...