Я использую clone()
, чтобы создать клон объекта ответа. Затем сохраните его в кэш-памяти. Но я получил сообщение об ошибке, когда сервисный работник хочет сохранить ответ о результате выборки. Я использую сервисного работника или клонирую ответ неправильно?
Полученное сообщение об ошибке:
Uncaught (in promise) TypeError: Failed to execute 'clone' on 'Response': Response body is already used
снимок экрана: здесь
Вот часть моего кода:
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