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

135
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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