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

129
Views
¿Cómo entender este ejercicio async/await?

Estoy haciendo algunos ejercicios en async/await y estoy completamente en blanco en este:

La función ​​opA​ debe llamarse antes de opB ​, y opB​ llamarse antes ​opC . Llame a las funciones de tal manera que se imprima ​C​ luego ​B​ luego ​A ​.

 const print = (err, contents) => { if (err) console.error(err) else console.log(contents ) } const opA = (cb) => { setTimeout(() => { cb(null, 'A') }, 500) } const opB = (cb) => { setTimeout(() => { cb(null, 'B') }, 250) } const opC = (cb) => { setTimeout(() => { cb(null, 'C') }, 125) }

Supongo que hay un error tipográfico en la pregunta, por lo que debería hacer que las funciones impriman ABC y no CBA .

Mi intento es este:

 (async function () { await print(opA()); await print(opB()); await print(opC()); }());

pero lo consigo

 cb(null, 'C') ^ TypeError: cb is not a function

Pregunta

Literalmente no tengo idea de cómo resolver este problema y no entiendo el uso de la función de print .

Cualquier ayuda sobre cómo ponerme en marcha será muy apreciada =)

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Dijiste que este es un ejercicio async/await, pero el código que muestras es la antítesis completa de async/await: utiliza el paradigma de devolución de llamada.

Para hacer que su código imprima CBA , necesitaría pasar devoluciones de llamada a las funciones opX en tal orden para que impriman sus resultados:

 const print = (err, contents) => { if (err) console.error(err) else console.log(contents ) } const opA = (cb) => { setTimeout(() => { cb(null, 'A') }, 500) } const opB = (cb) => { setTimeout(() => { cb(null, 'B') }, 250) } const opC = (cb) => { setTimeout(() => { cb(null, 'C') }, 125) } opA(print); opB(print); opC(print);

about 4 years ago · Juan Pablo Isaza Report

0

La función almacenada en optA , opB , opC acepta una función de devolución de llamada cb que se llama en el tiempo de espera, con el primer argumento establecido en null y el segundo en A , B , C .

print contiene una función que acepta un error ( err ) como primer argumento y lo que se va a imprimir como segundo argumento ( contents ).

Entonces combinaría la función opt con print de esa manera: optA(print) .

En la forma actual de la pregunta, sería simplemente:

 opA(print) opB(print) opC(print) 

 const print = (err, contents) => { if (err) console.error(err) else console.log(contents ) } const opA = (cb) => { setTimeout(() => { cb(null, 'A') }, 500) } const opB = (cb) => { setTimeout(() => { cb(null, 'B') }, 250) } const opC = (cb) => { setTimeout(() => { cb(null, 'C') }, 125) } opA(print) opB(print) opC(print)

Para obtener el resultado: C , B , A (debido a los retrasos utilizados para setTimeouts ).

Pero puede que falte algo en la pregunta.

about 4 years ago · Juan Pablo Isaza Report

0

El orden en que llame a estas funciones es casi irrelevante para el resultado deseado. Los temporizadores están configurados para ejecutarse en ese orden específico, primero C , luego B y luego A

Así que puedes llamarlos:

 opA(print); opB(print); opC(print);

O incluso:

 opB(print); opA(print); opC(print);

O incluso:

 opC(print); opB(print); opA(print);

Sin embargo, hay formas en las que puede cambiar el orden en el que obtendría un resultado incorrecto. Por ejemplo:

 opA((err, a) => ( print(err, a), opB((err,b) => ( print(err, b), opC(print) )) ))

Que llamará a opB después de que se ejecute el temporizador establecido por opA y opC se llamará opB después de que se ejecute el temporizador opB.

Creo que el propósito del ejercicio podría ser que puedas observar que el orden en el que llamas a tus funciones no siempre refleja el orden que podrías esperar intuitivamente.

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!