Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
Agregue dinámicamente valores de diferentes respuestas json - JS

Llamo a una API y obtengo el total_tweet_count. Si la metaetiqueta contiene un next_token, busco la siguiente API (aquí llamo al objeto correspondiente) con el next_token y empujo el total_tweet_count a una matriz. Sin embargo, si la respuesta no contiene un next_token, dejo de iterar y simplemente presiono total_tweet_count y devuelvo la matriz. Por alguna razón, el código no parece ejecutarse. Por favor ayuda.

El siguiente ejemplo debería obtener el next_token de res1 y llamar a res2 e insertar el tweet_count en la matriz. Luego, usando el next_token de res2, obtenga los datos de res3 y presione el conteo. Dado que res3 no tiene un next_token, finalizamos el ciclo y devolvemos los datos. Esta es la expectativa. Por favor aconséjame.

 const getData = async () => { const totalCount = []; const results = await Promise.resolve(data.res1); totalCount.push(results.meta.total_tweet_count) do { const results1 = await Promise.resolve(data[`res${results.meta.next_token}`]); totalCount.push(results1.meta.total_tweet_count) } while (results.meta.next_token) return totalCount; } getData().then(res => console.log(res))

El resultado final que espero es [1,20, 8]

Por favor aconséjame.

Enlace de violín: https://jsfiddle.net/czmwtj3e/

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Su condición de bucle es constante:

 const results = await Promise.resolve(data.res1); //^^^^^^^^^^^^^ … do { … } while (results.meta.next_token)

lo que buscas es

 const getData = async () => { const totalCount = []; let results = await Promise.resolve(data.res1); totalCount.push(results.meta.total_tweet_count) while (results.meta.next_token) { results = await Promise.resolve(data[`res${results.meta.next_token}`]); totalCount.push(results.meta.total_tweet_count) } return totalCount; }

o

 const getData = async () => { const totalCount = []; let results = {meta: {next_token: 1}}; do { results = await Promise.resolve(data[`res${results.meta.next_token}`]); totalCount.push(results.meta.total_tweet_count) } while (results.meta.next_token) return totalCount; }

Observe que no hay const results1 en ninguno de estos, sino una asignación a la variable de results mutables.

about 4 years ago · Juan Pablo Isaza Relatório

0

Por lo que yo puedo decir:

  • getData() es un proceso totalmente síncrono que actúa sobre data , por lo que no necesita ser una asyncFunction .
  • la matriz requerida de recuentos de tweets se puede crear con una combinación de Object.keys() y Array.prototype.reduce() .
  • no es necesario usar la propiedad .next_token (a menos que tenga algún significado secreto más allá de lo que se ha explicado en la pregunta).
 const getData = () => { const keys = Object.keys(data); // array ['res1', 'res2', 'res3'] const totalCounts = keys.reduce((arr, key) => { // iterate the `keys` array with Array.prototype.reduce() arr.push(data[key].meta.total_tweet_count); // push next tweet count onto the array return arr; // return `arr` to be used in the next iteration }, []); // start the reduction with empty array return totalCounts; // [1, 20, 8] };

En la práctica, usted:

  • pasar data a la función
  • evitar variables intermedias
 const getData = (data) => { return Object.keys(data).reduce((arr, key) => { arr.push(data[key].meta.total_tweet_count); return arr; }, []); };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda