nodejs обещает в цикле - PullRequest
0 голосов
/ 01 мая 2018
let token = null;
let allData = [];
while( true) {
  getData( token).then( function( data, nextToken){
    token = nextToken;
    allData.push( data);
  });
  if( token == null) break;
}
return allData;

Как вы знаете, этот код не работает, как я исключил, поскольку цикл while будет продолжаться до того, как значение токена будет установлено в качестве значения nextToken. Есть ли способ получить все данные?

1 Ответ

0 голосов
/ 01 мая 2018

Вы можете использовать рекурсивную функцию для этого.

function getDataRecursive(token, data = []) {
    return getData(token).then((newData, nextToken) => {
        if(nextToken === null) {
            return [...data, newData];
        }
        return getDataRecursive(nextToken, data);
    });
}

getDataRecursive(token).then((data) => {
    console.log(data); // Will contain your array of data
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...