全部产品
Search
文档中心

:FAQ tentang operasi waitUntil

更新时间:Aug 06, 2025

Topik ini menjawab beberapa pertanyaan umum terkait metode waitUntil dari EdgeRoutine (ER).

Mengapa permintaan fetch kadang-kadang gagal?

Permintaan fetch dapat gagal karena alasan-alasan berikut:

  • Siklus hidup konteks

    Ketika Anda memanggil metode addEventListener untuk mendaftarkan fungsi callback, konteks dibuat secara otomatis. Setelah objek Response, termasuk header respons dan body yang dikembalikan oleh metode event.respondWith, telah dibaca, konteks ditutup.

    Siklus hidup semua fungsi asinkron merupakan bagian dari siklus hidup konteks. Fungsi asinkron menunggu eksekusi objek Promise hingga objek tersebut diselesaikan. Jika Anda tidak ingin fungsi asinkron menunggu eksekusi objek Promise, panggil metode event.waitUntil. Metode ini memperpanjang siklus hidup konteks hingga semua objek Promise yang dilewatkan ke metode waitUntil dieksekusi.

  • Status bersama di antara konteks

    Status tidak dapat dibagikan di antara konteks. Data yang tidak dalam struktur JavaScript standar tidak dapat dibagikan di seluruh konteks. Sebagai contoh, Anda tidak dapat membagikan data dalam struktur API Service Worker atau objek Stream di seluruh konteks. Jika Konteks A menggunakan objek yang tidak dimiliki oleh Konteks A, ER mendeteksi objek tersebut dan melempar pengecualian.

    Catatan

    Anda dapat menggunakan objek JavaScript asli, seperti String, Array, Object, dan Number, atau kelas kustom, untuk berbagi status.

  • Objek Promise konkuren

    Objek Promise yang tidak di-tunggu oleh fungsi adalah konkuren. Jika Anda ingin ER merespons browser segera setelah ER menerima permintaan alih-alih menunggu subpermintaan, panggil metode waitUntil untuk memastikan program berjalan sesuai harapan.

  • Pengecualian yang dilempar oleh fungsi asinkron

    Jika subpermintaan dalam pernyataan waitUntil melempar pengecualian, konteks keluar.

Bisakah saya memanggil metode waitUntil berkali-kali?

Anda dapat memanggil metode waitUntil berkali-kali, atau menyusun metode waitUntil di dalam metode waitUntil lainnya. Dengan cara ini, objek Promise yang dikembalikan oleh salah satu metode waitUntil diselesaikan, dan Anda dapat terus memanggil metode waitUntil dalam fungsi callback.

Catatan

Konteks memiliki waktu respons tertentu. Jika waktu respons habis, konteks keluar.