Heim > Backend-Entwicklung > C++ > Wie zeige ich einen Spinner während lang andauernder API-Aufrufe in Blazor an?

Wie zeige ich einen Spinner während lang andauernder API-Aufrufe in Blazor an?

Patricia Arquette
Freigeben: 2024-12-28 10:53:10
Original
912 Leute haben es durchsucht

Warten oder Spinner während API-Aufrufen in Blazor anzeigen

Blazor ermöglicht es Ihnen, dem Benutzer während lang andauernder API-Aufrufe Feedback anzuzeigen, indem Sie visuelle Hinweise wie Wartecursor oder Spinner-Bilder verwenden.

Problem:

In Ihrer Blazor-Anwendung haben Sie versucht, CSS zu verwenden, um einen sich drehenden Cursor anzuzeigen während API-Aufrufen. Der Seiteninhalt wurde jedoch erst aktualisiert, als der Aufruf abgeschlossen war.

Lösung:

Option 1: Task.Delay(1) verwenden

  • Erstellen Sie eine asynchrone Methode.
  • Verwenden Sie „await Task.Delay(1)“ oder „await“. Task.Yield(); um die Aktualisierung der Benutzeroberfläche zu erzwingen, bevor der API-Aufruf abgeschlossen ist.
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    
}
Nach dem Login kopieren

Option 2: Verwenden von Task.Run() (nicht für WebAssembly)

  • Wenn Ihre LongOperation()-Methode nicht asynchron ist, schließen Sie sie in eine Aufgabe ein und warten Sie darauf, dass sie verwendet wird Task.Run().
async Task AsyncLongOperation()    // this is an async task
{
    spinning=true;
    await Task.Run(()=> LongOperation());  //<--here!
    currentCount++;
    spinning=false;
}
Nach dem Login kopieren

Effekt

How to Display a Spinner During Long-Running API Calls in Blazor?

Hinweis für serverseitiges Prerendering:

In Blazor Server-Apps wird der Spinner aufgrund des Vorrenderns nicht angezeigt. Um es sichtbar zu machen, führen Sie den langen Vorgang in OnAfterRender aus.

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

Weitere Beispiele und Informationen finden Sie in Open-Source-Projekten wie BlazorPro.Spinkit.

Das obige ist der detaillierte Inhalt vonWie zeige ich einen Spinner während lang andauernder API-Aufrufe in Blazor an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage