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
addEventListeneruntuk mendaftarkan fungsi callback, konteks dibuat secara otomatis. Setelah objek Response, termasuk header respons dan body yang dikembalikan oleh metodeevent.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.
CatatanAnda 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.
Konteks memiliki waktu respons tertentu. Jika waktu respons habis, konteks keluar.