Saltar al contenido

await Task.CompletedTask ¿para qué?

Hemos investigando en distintos sitios y así darte la respuesta a tu inquietud, si tienes alguna duda déjanos tu pregunta y respondemos con gusto.

Solución:

Está ahí para que sea más fácil para una etapa posterior implementar llamadas de código asíncrono sin tener que alterar la firma, evitando así tener que refactorizar el código de llamada.

Si bien el código de muestra con scaffolding es síncrono, Template Studio está diseñado específicamente en torno a un asíncrono capa de acceso a datos, se espera que implemente su propio acceso a datos modificando el cuerpo de los métodos generados.

Si el asíncrono implementación fueron NO implementada, habría cambios de código significativos en toda la aplicación con plantilla y sería una curva de aprendizaje muy pronunciada para los nuevos desarrolladores, el objetivo de la plantilla es ponerse en marcha con el mínimo esfuerzo o incluso experiencia.

Otra opción sería quitar el async palabra clave de la firma del método y esa línea y hacer

return Task.FromResult>(data); 

Verá esta construcción cuando necesite devolver una tarea esperable debido a una interfaz, por ejemplo, mientras que la implementación no tiene trabajo asincrónico que hacer.

Sin embargo, en este caso, dado que es una plantilla, esperan que las personas reemplacen la await Task.Completed con algo como await FetchDataFromDatabaseAsync();. Desde el async la palabra clave ya está allí, minimiza los cambios necesarios para implementar su propia llamada asíncrona.

De todos modos, sin esta construcción de espera, puedes hacer esto:

public class SampleModelService

    public Task> GetDataAsync()
    
        var data = new List();

        data.Add(new SampleModel
        
            Title = "Lorem ipsum dolor sit 1",
            Description = "Lorem ipsum dolor sit amet",
            Symbol = Symbol.Globe
        );

        data.Add(new SampleModel
        
            Title = "Lorem ipsum dolor sit 2",
            Description = "Lorem ipsum dolor sit amet",
            Symbol = Symbol.MusicInfo
        );

        return Task.FromResult>(data); 
     

Si no hay ningún requisito para devolver una tarea (no tiene ningún código asíncrono), simplemente elimínelo por completo. (Pero luego tienes que refactorizar el código que llama a este método)

Al revisar este código, sospecho que alguien llamará a un método asíncrono más adelante en el proceso de desarrollo y ya lo anticipé al especificar que este método devuelve un Task.

valoraciones y reseñas

Si haces scroll puedes encontrar las notas de otros sys admins, tú igualmente tienes la libertad de dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *