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

193
Vistas
¿Cómo controlar la tarea C# (async/await de la misma manera que JavaScript Promise)?

Soy desarrollador js y salté a C#. Estoy aprendiendo async/await/Task en C# y no puedo entender cómo controlar C# Task.

En javascript, puedo guardar el controlador de resolve de Promise para llamarlo más tarde (y resolver la promesa), por ejemplo, para organizar la comunicación entre algunas partes de la aplicación "mal conectadas" (la solicitud no devuelve el resultado, pero el resultado se envía por separado y activa algún "replyEvent "), y hacer algo como esto:

 // javascript const handlers = {} // event firing on reply const replyEventListener = (requestId, result) => { if (handlers[requestId]) { handlers[requestId](result) delete handlers[requestId] } } const requestFunction = (id, params) => new Promise(resolve => { // handler is saved to use later from "outside" handlers[id] = resolve; // do required request makeRequest(params) }) // .. somewhere in code request becomes simple awaitable const resultOfRequest = await requestFunction(someUniqueId)

¿Cómo puedo hacer lo mismo con C# Task ?

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

0

Creo que la filosofía detrás de Promise (en JS) y Task (en C#) es diferente. No los implementamos exactamente de la misma manera.

Lea la documentación en MSDN:

  • Clase de Task - Observaciones

  • Task<TResult> Clase

Debes vaciar tu copa para poder volver a llenarla.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Un buen artículo en MSDN es el siguiente que muestra ejemplos de cómo las tareas se pueden usar como promesas en el sentido de que puede iniciarlas y luego esperarlas más tarde.

Programación asíncrona con async y await

Si desea await una Task en C# como lo haría con una Promise en JS, debe hacer lo siguiente:

  1. Cree un método o función que devuelva una Task . Por lo general, esta será una Task de algún objeto de clase. En el artículo anterior, hace referencia a la creación del desayuno como una analogía, por lo que puede definir FryEggsAsync como un método que toma un número int de cuántos huevos freír y devuelve Task<Egg> . La convención de C# es terminar cualquier función o nombre de método con Async para indicar que se devuelve una Task .
  2. Cree su Task , que es similar a Promise en JS, por lo que podría hacer var eggsTask = FryEggsAsync(2) , que almacenaría una Task<Egg> en eggsTask , que luego puede esperar o pasar a otras funciones según sea necesario.
  3. Para esperar a que su Task lo resuelva y obtenga el resultado, simplemente await eggsTask .

También puede usar Task.WaitAll para await varias tareas a la vez, similar a Promise.all en JS, al pasar una matriz de tareas como argumento para esa llamada de método. Consulte la documentación de Task.WaitAll para ver algunos ejemplos de esto. Sin embargo, la diferencia aquí es que los resultados se almacenan por separado en cada tarea que se pasa a Task.WaitAll , en lugar de agregarse en una matriz de resultados como en JS con Promise.all , pero si necesita await varias tareas, será más fácil forma de hacerlo.

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