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

152
Visualizações
¿Cómo obtener datos de MySQL y después de 30 segundos recuperarlos nuevamente en Node.js?

Lo que intento hacer es obtener los datos de acuerdo con la marca de tiempo de la base de datos una vez (llámelo origen) y espere 30 segundos para recuperarlos nuevamente con la misma consulta (llámelo reciente) en Node.js.

Compárelos si el origen y el reciente son iguales o no, luego haga algo que dependa del resultado.

Aquí está mi código:

 CREATE TABLE data( post_id VARCHAR(50) PRIMARY KEY, post_text TEXT , post_img varchar(500), post_time TIMESTAMP, );
 const finalFn = async () => { let origin let recent origin = await getOg() recent = await setTimeout(function () { db.execute( // this one is same function with getOg() `SELECT * FROM data WHERE post_time = (SELECT MAX(post_time) FROM data)` ) .then(data => { return data[0][0] }) .catch(err => console.log(err)) console.log("I'm going to get some post") }, 5000) //5sec console.log('1', origin) console.log('2', recent) console.log(originPost === recent) } finalFn()

obtuve 'oirgin' fácilmente como:

 { post_id: '12345', post_text: 'test', post_img: null, post_time: 2022-05-06... }

el 'reciente' debería ser el mismo en este momento, porque aún no se han insertado nuevos datos en la base de datos.

pero obtuve 'reciente' así:

 Timeout { _idleTimeout: 5000, _idlePrev: [TimersList], _idleNext: [TimersList], _idleStart: 158, _onTimeout: [Function (anonymous)], _timerArgs: undefined, _repeat: null, _destroyed: false, [Symbol(refed)]: true, [Symbol(kHasPrimitive)]: false, [Symbol(asyncId)]: 29, [Symbol(triggerId)]: 0 }

Todavía estoy aprendiendo asincrónico, así que creo que debo perderme algo en la parte settimeout...

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

0

setTimeout no hace async en absoluto, y solo devuelve un objeto Timeout, como notó. ( await algo que no es una Promesa solo devolverá el objeto en sí).

Querrás algo como esto. La función de delay es un patrón común para hacer que setTimeout esté disponible.

 function delay(number) { return new Promise((resolve) => setTimeout(resolve, number)); } async function getOg() { const res = await db.execute(`SELECT * FROM data WHERE post_time = (SELECT MAX(post_time) FROM data)`); return res[0][0]; } const finalFn = async () => { const origin = await getOg(); await delay(5000); const recent = await getOg(); console.log("1", origin); console.log("2", recent); };
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