是否有必要在waitUntil
内使用respondWith
(本身在fetch
事件中)? respondWith
已经waitUntil
收到已解决的承诺?
对此的一些讨论是here,其中给出了以下简单示例,其中使用了两者:
addEventListener('fetch', event => {
event.respondWith(
fetch(whatever).then(response => {
event.waitUntil(addThisToTheCache(response));
return response;
})
);
});
但如果没有waitUntil
,这不能写吗?如下:
addEventListener('fetch', event => {
event.respondWith(
fetch(whatever).then(response => {
return addThisToTheCache(response).then(() => {
return response;
});
})
);
});
答案 0 :(得分:10)
这将延迟浏览器处理和显示响应两秒钟:
addEventListener('fetch', event => {
event.respondWith(async function() {
const response = await fetch(event.request);
await processResponseForTwoSeconds(response);
return response;
}());
});
这不会:
addEventListener('fetch', event => {
event.respondWith(async function () {
const response = await fetch(event.request);
event.waitUntil(processResponseForTwoSeconds(response));
return response;
}());
});
waitUntil
告诉服务工作人员继续执行正在进行的任务,但不会延迟响应。