【发布时间】:2018-10-19 12:30:55
【问题描述】:
在服务工作者内部,如果请求失败,我会尝试将发出的请求作为响应返回。看起来很简单,但是行不通。
事实上,当我尝试返回它时,它返回一个空对象,即使是.clone()。
代码如下:
fetch(event.request.clone())
.catch((err) => {
queue.addRequest(event.request)
return new Response(JSON.stringify({ deferred: true, ...event.request }), {
headers: new Headers({ "Content-Type": "application/json" })
})
})
它的响应总是:{ deferred: true }。仅此而已。
有可能吗?
【问题讨论】:
-
你能说明你在哪里调用这个函数吗?什么是事件请求?
-
我打电话给:
self.addEventListener('fetch', (event) => { ... }) -
是否需要两次请求数据?
-
请求没有两次发送到服务器。 service-worker 就像一个代理。这里我只是处理中间的请求。
-
self 是 serviceWorkerGlobalContext(未围绕此代码声明,这是一个关键字),而 queue 是一个 Workbox(用于服务工作者的 Google 库)类。这无助于回答。这是关于请求类的全部内容:developer.mozilla.org/en-US/docs/Web/API/Request
标签: javascript fetch service-worker fetch-api