javascript Concatenaçãoderesultado paginado de API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Concatenaçãoderesultado paginado de API相关的知识,希望对你有一定的参考价值。

/*
Tempo esperado para resolver: 30 minutos

Descrição do problema:
Temos uma função chamada listWithPagination que retorna um array de registros paginados.
A única maneira de conseguir um array com todos os registros,
é fazer requisições sequenciais para cada página, concatenando os resultados.

Descrição da solução:
Criar uma função chamada concatenateResults, que receba como parâmetro a função original
que retorna os dados paginados, e chama essa função sequencialmente para cada página,
até que a resposta seja um array vazio, o que indica que a paginação terminou.
Retornar uma Promise que resolve com um array contendo todos as páginas concatenadas.

Tarefa:
Baseado na solução acima, implementar o corpo da função abaixo concatenateResults.
1) Não é permitido modificar nenhuma outra função.
2) Não é permitido fazer require de outro módulo.
3) Pode-se criar funções auxiliares se preciso, mas não crie variáveis no escopo global.
4) O mais importante é clareza e simplicidade do código.
5) A quantidade de páginas é desconhecida, por isso a solução precisa funcionar para "n" páginas,
a única maneira de saber que não tem mais páginas é o fato de retornar um array vazio.
6) Faça uma cópia em um gist privado (secreto) e envie o link por email.
7) Modifique apenas a linha @TODO.
*/

// Cria uma resposta falsa para testar localmente
function buildFakeResult(page) {
  if (page > 4) {
    return []
  } else {
    return [
      {
        product: `Nome do Produto ${page * 2 - 1}`,
        price: page * 7.50 + 3.21
      },
      {
        product: `Nome do Produto ${page * 2}`,
        price: page * 7.50 + 2.59
      }
    ]
  }
}


// Função falsa para simular uma requisição,
// Um array vazio representa o fim da paginação
function listWithPagination(page) {
  return Promise.resolve(buildFakeResult(page))
}

// Função que concatena o resultado de todas as páginas
function concatenateResults(callback, page = 1) {
  // @TODO: implementar esta função
}

// Para utilizar, basta passar como parâmetro a função que retorna os dados paginados
concatenateResults(listWithPagination)
  .then(data => console.log(data))
/*

Executar utilizando node async-concat.js
saída esperada:

[ { product: 'Nome do Produto 1', price: 10.71 },
  { product: 'Nome do Produto 2', price: 10.09 },
  { product: 'Nome do Produto 3', price: 18.21 },
  { product: 'Nome do Produto 4', price: 17.59 },
  { product: 'Nome do Produto 5', price: 25.71 },
  { product: 'Nome do Produto 6', price: 25.09 },
  { product: 'Nome do Produto 7', price: 33.21 },
  { product: 'Nome do Produto 8', price: 32.59 } ]

*/

以上是关于javascript Concatenaçãoderesultado paginado de API的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript AZ»é™¤å-ç¬|串é|-A°¾çš“C

javascript PegarPosiçãodeum array

javascript Criandoapituraçãoparautilizar o knex

javascript 菜单deNavegaçãoPadrão

javascript Criaçãode输入类型没有graphql

javascript Helpers paravalidaçãodeformulários