在服务工作者内部,如果请求失败,我会尝试将发出的请求作为响应返回。它似乎很简单,但它不起作用。
事实上,当我尝试返回它时,即使使用.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 }
。别无其他。
有可能吗?
答案 0 :(得分:1)
我刚刚找到了获取请求正文的方法并将其返回给我。
可以使用.json()
来获取它,并使用请求正文返回一个承诺。
看起来像这样:
fetch(event.request.clone())
.catch((err) => {
queue.addRequest(event.request)
return event.request.clone().json().then((requestBody) => {
return new Response(JSON.stringify({ deferred: true, ...requestBody }), {
headers: new Headers({ "Content-Type": "application/json" })
})
})
})