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

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

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 Report

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