Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

197
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda