Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
Funciones de cadena para que se ejecuten una vez que se completa la anterior

Estoy tratando de simplemente encadenar algunas funciones asíncronas para que funcionen en orden. Probablemente estoy cometiendo un error básico.

Solo quiero que se ejecute printFirst y luego una vez que se complete para que se ejecute printSecond.
a continuación está mi código que no funciona

 const printFirst = ()=>{ console.log('First') } const printSecond = ()=>{ console.log('Second') } // Print this first (after 2 sec) const first = () =>{ setTimeout(printFirst,2000) } // Once the above function is run then run this const second = () =>{ setTimeout(printSecond,2000) } first() .then(second())

me sale el error

 node timeout.js file:///Users/bob/Documents/dev/javascript/node/nodeScratch/timeout.js:20 .then(second()) ^ TypeError: Cannot read properties of undefined (reading 'then') at file:///Users/bob/Documents/dev/javascript/node/nodeScratch/timeout.js:20:1 at ModuleJob.run (node:internal/modules/esm/module_job:195:25) at async Promise.all (index 0) at async ESMLoader.import (node:internal/modules/esm/loader:337:24) at async loadESM (node:internal/process/esm_loader:88:5) at async handleMainPromise (node:internal/modules/run_main:61:12)

Vi una publicación aquí ¿Cómo accedo a los resultados de promesas anteriores en una cadena .then()? lo que sugiere que es posible que no tenga que usar "entonces". Sin embargo, no estoy seguro de si eso es realmente relevante para mi caso de uso.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Las funciones asíncronas básicas en JS se basan en Promises. Puede escribir una Promesa que espera una respuesta de la red u otro IO. Puede escribir uno que espere la interacción del usuario. También puede escribir uno que espere el final de un setTimeout . Este es un ejemplo de eso:

 const printFirst = ()=>{ console.log('First') } const printSecond = ()=>{ console.log('Second') } // Print this first (after 2 sec) const first = () => new Promise ((resolve, reject) => { setTimeout(() => resolve(printFirst()), 2000) }) // Once the above function is run then run this const second = () =>{ setTimeout(printSecond,2000) } first() .then (second)

Además de envolver su primera función en una new Promise , también debemos cambiar

 first () .then (second ())

a

 first () .then (second)

La inicial dispara la second función inmediatamente y pasa el resultado a .then . En su lugar, queremos pasar la función en sí. Para necesidades más complejas, podría hacer esto en su lugar:

 first () .then (result => second (result, someOtherArgument))

Si desea que algo más se ejecute después de second , entonces también debe incluirse en una Promise .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda