查看服务工作者中的请求是否成功

时间:2015-10-15 10:25:17

标签: javascript service-worker fetch-api

我的服务工作者中有以下代码:

Object p1 = ...

然而,它在开发控制台中做了一些奇怪的事情,似乎是让脚本异步加载而不是同步加载(在这种情况下是坏的)。

有没有办法在没有手动调用self.addEventListener('fetch', function (event) { var fetchPromise = fetch(event.request); fetchPromise.then(function () { // do something here }); event.respondWith(fetchPromise); }); 的情况下收听请求?

例如:

fetch(event.request)

1 个答案:

答案 0 :(得分:3)

如果要确保在将响应返回到页面之前执行整个系列的操作,则应该响应整个promise链,而不仅仅是fetch返回的初始promise。

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;
  }));
});