Как получить значение обещания внутри цикла, превышающего обещание, чтобы увеличить другое значение? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь получить строки таблицы: И я получаю количество строк: мне нужно получить значение, возвращаемое обещанием и увеличить другое значение: + rowCountWhile> который находится в цикле while в той же функции. Не удалось получить значение rowCountWhile для увеличения

public  getRowCount(webTableElement:ElementArrayFinder,totalcount:ElementFinder){
    let finalTotal
    let totalslice
    let finalrowCount
    let rowCountWhile1
    totalcount.getText().then(function(total){
        console.log("total:"+total)
        totalslice = total.slice(15);
        finalTotal = parseInt(totalslice);
        console.log("final total:"+finalTotal);

    let countrows = webTableElement.count().then(function(rowCount){

    console.log("tr count:"+rowCount)
    finalrowCount = rowCount;
    console.log("Final RowCount:"+finalrowCount)
    while(finalrowCount<finalTotal)
    {
        console.log("Test"+finalrowCount)
        provisioningToolPage.superBranchIDNextNavigator.click();
        return webTableElement.count().then(function(rowCountWhile){
        console.log("Promise value:"+rowCountWhile)
        rowCountWhile1 = rowCountWhile;
        return rowCountWhile1
    })

       console.log("outside promise:"+rowCountWhile1)
       //finalrowCount = finalrowCount + rowcountwhile;
       //console.log("rowCountWhile:"+finalrowCount1)
       finalrowCount= finalrowCount + 10;
    }
    })
})
}

1 Ответ

0 голосов
/ 03 мая 2019

Сфокусируйтесь на коде:

while(finalrowCount<finalTotal)
    {
        console.log("Test"+finalrowCount)
        provisioningToolPage.superBranchIDNextNavigator.click();
        return webTableElement.count().then(function(rowCountWhile){
        console.log("Promise value:"+rowCountWhile)
        rowCountWhile1 = rowCountWhile;
        return rowCountWhile1
    })

       console.log("outside promise:"+rowCountWhile1)
       //finalrowCount = finalrowCount + rowcountwhile;
       //console.log("rowCountWhile:"+finalrowCount1)
       finalrowCount= finalrowCount + 10;
    }
    })

Вы смешиваете while с Promise.Что произойдет, так это то, что все операторы while будут выполняться до того, как разрешит первое обещание.

Исправление

Самое простое решение - сделать последовательность выполнения кода последовательной, используя async/await https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

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