Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menunjukkan Maklum Balas Pengguna Secara Dinamik Semasa Panggilan API Berlangsung Lama dalam Blazor?

Bagaimanakah Saya Boleh Menunjukkan Maklum Balas Pengguna Secara Dinamik Semasa Panggilan API Berlangsung Lama dalam Blazor?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 13:11:09415semak imbas

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

Memaparkan Maklum Balas Pengguna Secara Dinamik semasa Panggilan API dalam Blazor

Dalam Blazor, mengendalikan panggilan API yang berjalan lama memerlukan penyediaan maklum balas kepada pengguna, seperti memaparkan kursor tunggu atau imej "pemutar". Artikel ini membentangkan dua pendekatan untuk mencapai perkara ini:

Pilihan 1: Menggunakan Tugasan. Kelewatan(1)

  • Buat kaedah async.
  • Gunakan await Task.Delay(1); atau tunggu Task.Yield(); untuk flush perubahan.
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)

Buat Tugasan yang menyertakan operasi panjang :

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

Kesan pada Prapemarahan

Dalam apl Pelayan Blazor, pemutar mungkin tidak muncul kerana prapemarahan. Untuk menyelesaikan masalah ini, lakukan operasi panjang dalam OnAfterRender dan bukannya OnInitializedAsync.

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

Untuk mendapatkan cerapan tambahan tentang pelaksanaan pemutar yang berkesan, teroka projek sumber terbuka BlazorPro.Spinkit.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menunjukkan Maklum Balas Pengguna Secara Dinamik Semasa Panggilan API Berlangsung Lama dalam 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