首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务工作人员未能使用克隆()将获取的响应保存到cacheStorage中

服务工作人员未能使用克隆()将获取的响应保存到cacheStorage中
EN

Stack Overflow用户
提问于 2020-02-06 09:21:54
回答 1查看 291关注 0票数 0

我使用clone()创建响应对象的克隆。然后将其存储到缓存存储中。但是当服务工作者想要存储获取结果的响应时,我得到了错误消息。我是使用服务工作者还是以错误的方式复制响应?

我收到的错误消息:

Uncaught (in promise) TypeError: Failed to execute 'clone' on 'Response': Response body is already used

屏幕截图:这里

下面是我代码的一部分:

代码语言:javascript
复制
self.addEventListener("fetch", function(event) {
  // Get asset from cacheStorage first.
  // If it's not cached. Fetch it and cache it.
  event.respondWith(
    caches.match(event.request).then(function(cachedResponse) {
      return (
        cachedResponse ||
        fetch(event.request).then(function(fetchedResponse) {
          console.log(event.request.url);
          caches.open(cacheVersion).then(function(cache) {
            cache.put(event.request, fetchedResponse.clone());
          });

          return fetchedResponse;
        })
      );
    })
  );
}

整个代码:https://github.com/wtlin1228/service-worker/tree/master

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-06 09:42:47

我认为返回是在执行fetch之前被调用的,因此下面的错误被返回。

代码语言:javascript
复制
 fetch(event.request).then(function(fetchedResponse) {
          let fetchedResponses = fetchedResponse.clone();
          caches.open(cacheVersion).then((cache) => {
              cache.put(event.request, fetchedResponses);
          });

          return fetchedResponse;
        })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60091475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档