Получить все данные из ответа rest api (odata) с узлом рекурсивно через @ odata.nextLink - PullRequest
0 голосов
/ 08 января 2019

Я получаю ответ API, где 50000+ продуктов возвращаются по 100 одновременно. В конце ответа есть «@ odata.nextLink». Можно ли автоматизировать выборку оставшихся данных с помощью узла, используя '@ odata.nextLink'?

Я пробовал цикл while вокруг запроса, но безуспешно.

есть. while (body ['@ odata.nextLink']) {request ...}

Можно ли это сделать?

1 Ответ

0 голосов
/ 08 января 2019

Попробуйте что-то похожее на это:

const fakeAPI = async id => (
  id==10
  ? { id }
  : { id, nextId: id+1 }
);

( async () => {
  let allResponses = [];
  let finished = false;
  let id = 0;
  while (!finished) {
    let response = await fakeAPI(id);
    finished = response.nextId===undefined;
    id = response.nextId;
    allResponses.push(response);
  }
  console.log(allResponses);
})()

Использование async / await довольно круто при цикле с асинхронным кодом.

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