Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

111
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!