Maison >développement back-end >C++ >Comment puis-je afficher dynamiquement les commentaires des utilisateurs lors des appels d'API de longue durée dans Blazor ?

Comment puis-je afficher dynamiquement les commentaires des utilisateurs lors des appels d'API de longue durée dans Blazor ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-28 13:11:09414parcourir

How Can I Dynamically Show User Feedback During Long-Running API Calls in Blazor?

Affichage dynamique des commentaires des utilisateurs lors des appels d'API dans Blazor

Dans Blazor, la gestion des appels d'API de longue durée nécessite de fournir des commentaires aux utilisateurs, tels que affichant un curseur d'attente ou une image "spinner". Cet article présente deux approches pour y parvenir :

Option 1 : Utiliser Task.Delay(1)

  • Créer une méthode asynchrone.
  • Utilisez wait Task.Delay(1); ou attendez Task.Yield(); pour vider les modifications.
private async Task AsyncLongFunc()    // this is an async task
{
    spinning=true;
    await Task.Delay(1);      // flushing changes. The trick!!
    LongFunc();               // non-async code
    currentCount++;
    spinning=false;
    await Task.Delay(1);      // changes are flushed again    
}

Option 2 : Utiliser Task.Run() (pas pour WebAssembly)

Créer une tâche qui englobe l'opération longue :

async Task AsyncLongOperation()    // this is an async task
{
    spinning=true;
    await Task.Run(()=> LongOperation());  //<--here!
    currentCount++;
    spinning=false;
}

Effet sur Pré-rendu

Dans les applications Blazor Server, le spinner peut ne pas apparaître en raison du pré-rendu. Pour résoudre ce problème, effectuez l'opération longue dans OnAfterRender au lieu de OnInitializedAsync.

protected override async Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {            
        await Task.Run(()=> LongOperation());//<--or Task.Delay(0) without Task.Run
        StateHasChanged();
    }
}

Pour des informations supplémentaires sur les implémentations efficaces de spinner, explorez le projet open source BlazorPro.Spinkit.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn