Наконец я нашел решение.Ниже мой код:
const photoQueue = new workbox.backgroundSync.Plugin('photoSubmissions', {
maxRetentionTime: 48 * 60, // Retry for max of 48 Hours
callbacks: {
queueDidReplay: function (requests) {
if (requests.length === 0) {
removeAllPhotoSubmissions();
}
else {
for(let request of requests) {
if (request.error === undefined && (request.response && request.response.status === 200)) {
removePhotoSubmission();
}
}
}
}
}
});
const myPhotoPlugin = {
fetchDidFail: async ({originalRequest, request, error, event}) => {
addPhotoSubmission();
changePhoto();
}
};
workbox.routing.registerRoute(
new RegExp('.*\/Home\/Submit'),
workbox.strategies.networkOnly({
plugins: [
photoQueue,
myPhotoPlugin
]
}),
'POST'
);
Я удалил fetch
.Если мы все еще хотим контролировать сами, нам нужно использовать respondWith()
.Я проверил это, это работает.Но я хотел бы использовать более рабочий способ для решения проблемы.Я использую workbox 3.6.3, и я создал свой собственный плагин для включения функции обратного вызова fetchDidFail
для обновления моих представлений.Вот ссылки, которые я нашел: один и два .Повторных сообщений больше нет.