FetchEvent
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
* Some parts of this feature may have varying levels of support.
Note: This feature is only available in Service Workers.
Đây là kiểu sự kiện cho các sự kiện fetch được gửi đến phạm vi toàn cục service worker. Nó chứa thông tin về lần tìm nạp, bao gồm yêu cầu và cách trình nhận sẽ xử lý phản hồi. Nó cung cấp phương thức event.respondWith(), cho phép chúng ta cung cấp phản hồi cho lần tìm nạp này.
Hàm khởi tạo
FetchEvent()-
Tạo một đối tượng
FetchEventmới. Hàm khởi tạo này thường không được dùng. Trình duyệt tạo các đối tượng này và cung cấp chúng cho các hàm callback sự kiệnfetch.
Thuộc tính phiên bản
Kế thừa các thuộc tính từ tổ tiên của nó, Event.
FetchEvent.clientIdRead onlyFetchEvent.handledRead only-
Một promise đang chờ trong khi sự kiện chưa được xử lý, và được thực hiện khi đã xử lý xong.
FetchEvent.isReloadRead only Deprecated Non-standard-
Trả về
truenếu sự kiện được gửi bởi người dùng đang cố tải lại trang, vàfalsenếu không. Nhấn nút làm mới là tải lại, trong khi nhấp vào liên kết và nhấn nút quay lại thì không. FetchEvent.preloadResponseRead only-
Một
PromisechoResponse, hoặcundefinednếu lần tìm nạp này không phải là điều hướng, hoặc tải trước điều hướng không được bật. FetchEvent.replacesClientIdRead only-
idcủaclientđang được thay thế trong quá trình điều hướng trang. FetchEvent.resultingClientIdRead only-
idcủaclientthay thế client trước trong quá trình điều hướng trang. FetchEvent.requestRead only-
Requestmà trình duyệt dự định thực hiện.
Phương thức phiên bản
Kế thừa các phương thức từ phần tử cha, ExtendableEvent.
FetchEvent.respondWith()-
Ngăn chặn xử lý tìm nạp mặc định của trình duyệt, và tự cung cấp (promise cho) một phản hồi.
ExtendableEvent.waitUntil()-
Kéo dài thời gian sống của sự kiện. Được dùng để thông báo cho trình duyệt về các tác vụ kéo dài ngoài việc trả về phản hồi, chẳng hạn như streaming và bộ nhớ đệm.
Ví dụ
Sự kiện fetch này sử dụng mặc định của trình duyệt cho các yêu cầu không phải GET. Đối với các yêu cầu GET, nó cố trả về kết quả khớp trong bộ nhớ đệm, và dùng mạng dự phòng. Nếu tìm thấy kết quả khớp trong bộ nhớ đệm, nó cập nhật bộ nhớ đệm không đồng bộ cho lần sau.
self.addEventListener("fetch", (event) => {
// Để trình duyệt thực hiện mặc định của nó
// cho các yêu cầu không phải GET.
if (event.request.method !== "GET") return;
// Ngăn chặn mặc định và tự xử lý yêu cầu.
event.respondWith(
(async () => {
// Cố lấy phản hồi từ bộ nhớ đệm.
const cache = await caches.open("dynamic-v1");
const cachedResponse = await cache.match(event.request);
if (cachedResponse) {
// Nếu tìm thấy kết quả khớp trong bộ nhớ đệm, trả về nó, nhưng cũng
// cập nhật mục trong bộ nhớ đệm trong nền.
event.waitUntil(cache.add(event.request));
return cachedResponse;
}
// Nếu không tìm thấy kết quả khớp trong bộ nhớ đệm, dùng mạng.
return fetch(event.request);
})(),
);
});
Thông số kỹ thuật
| Specification |
|---|
| Service Workers Nightly> # fetchevent-interface> |