Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memaparkan Spinner Semasa Panggilan API Berlangsung Lama di Blazor?

Bagaimana untuk Memaparkan Spinner Semasa Panggilan API Berlangsung Lama di Blazor?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 10:53:10915semak imbas

Memaparkan Tunggu atau Spinner Semasa Panggilan API dalam Blazor

Blazor membolehkan anda memaparkan maklum balas kepada pengguna semasa panggilan API berjalan lama menggunakan isyarat visual seperti kursor tunggu atau imej pemutar.

Isu:

Dalam aplikasi Blazor anda, anda cuba untuk gunakan CSS untuk memaparkan kursor berputar semasa panggilan API. Walau bagaimanapun, kandungan halaman tidak dimuat semula sehingga panggilan selesai.

Penyelesaian:

Pilihan 1: Menggunakan Tugasan. Kelewatan(1)

  • Buat kaedah tak segerak.
  • Gunakan await Task.Tunda(1) atau tunggu Task.Yield(); untuk memaksa UI mengemas kini sebelum panggilan API selesai.
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    
}

Pilihan 2: Menggunakan Task.Run() (Bukan untuk WebAssembly)

  • Jika kaedah LongOperation() anda tidak segerak, sertakan dalam Tugasan dan tunggu menggunakan Task.Run().
async Task AsyncLongOperation()    // this is an async task
{
    spinning=true;
    await Task.Run(()=> LongOperation());  //<--here!
    currentCount++;
    spinning=false;
}

Kesan

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

Nota untuk Prapaparan Sebelah Pelayan:

Dalam apl Pelayan Blazor, pemutar tidak akan muncul kerana prapemarahan. Untuk menjadikannya kelihatan, lakukan operasi panjang dalam OnAfterRender.

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

Untuk lebih banyak contoh dan maklumat, rujuk projek sumber terbuka seperti BlazorPro.Spinkit.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Spinner Semasa Panggilan API Berlangsung Lama di Blazor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn