2015-10-15 17 views
6

Tôi đã đoạn mã sau vào công nhân dịch vụ của tôi:Thấy nếu yêu cầu thành công từ bên trong một nhân viên dịch vụ

self.addEventListener('fetch', function (event) { 
    var fetchPromise = fetch(event.request); 

    fetchPromise.then(function() { 
    // do something here 
    }); 

    event.respondWith(fetchPromise); 
}); 

Tuy nhiên, nó đang làm một số công cụ kỳ lạ trong dev console và dường như được làm cho tải kịch bản không đồng bộ thay vì đồng bộ (trong bối cảnh này là xấu).

Có cách nào để lắng nghe khi yêu cầu được hoàn thành mà không gọi fetch(event.request) cách thủ công?

Ví dụ:

// This doesn't work 
self.addEventListener('fetch', function (event) { 
    event.request.then(function() { 
    // do something here 
    }); 
}); 
+0

Bạn có ý nghĩa gì khi tập lệnh tải không đồng bộ? Bạn đang làm gì trên giao diện người dùng với điều này? – philnash

+0

@philnash: Tôi nghĩ rằng tôi mới chỉ bắt nhầm lẫn bởi những thác nước: http://i.imgur.com/S3eU293.png tôi đã thực hiện thay đổi này và thời gian tải nhận thức của trang web tăng tốc 35% (2.0s -> 1,3s). Vẫn không chắc chắn tại sao. – callumacrae

Trả lời

3

Nếu bạn muốn đảm bảo rằng toàn bộ chuỗi video của các hành động được thực hiện trước khi đáp ứng được trả lại cho trang, bạn nên phản ứng với toàn bộ chuỗi lời hứa, không chỉ lời hứa ban đầu được trả về bằng cách tìm nạp.

self.addEventListener('fetch', function(event) { 
    event.respondWith(fetch(event.request).then(function(response) { 
    // The fetch() is complete and response is available now. 
    // response.ok will be true if the HTTP response code is 2xx 
    // Make sure you return response at the end! 
    return response; 
    }).catch(function(error) { 
    // This will be triggered if the initial fetch() fails, 
    // e.g. due to network connectivity. Or if you throw an exception 
    // elsewhere in your promise chain. 
    return error; 
    })); 
}); 
+0

Vâng, tôi không lo lắng về điều đó. Tôi theo nghĩa đen chỉ là giám sát, không sửa đổi bất cứ điều gì, vì vậy nó không thực sự làm cho bất kỳ sự khác biệt. Cảm ơn :) – callumacrae

Các vấn đề liên quan