javascript - 连接恢复时如何使用服务工作者(Workbox)处理 AJAX 响应
问题描述
我正在使用 Vue CLI 3 PWA 插件构建 PWA,但我不确定如何处理离线时进行的 AJAX 调用的响应。
我所拥有的基本上是来自 Workbox 文档的示例代码......
// service-worker.js
const queue = new workbox.backgroundSync.Queue('CR_OfflineQueue')
self.addEventListener('fetch', (event) => {
const promiseChain = fetch(event.request.clone())
.catch((err) => {
console.log('Queued Event:', event.request)
return queue.addRequest(event.request)
})
event.waitUntil(promiseChain)
})
AJAX 只是一个基本get()
的 Axios,在加载存储和测试突变时调用
// store.js
getUsername () {
return axios.get(
'http://localhost:8005/username/',
{
responseType: 'json',
withCredentials: true
})
}
const store = new Vuex.Store({
state: {
username: null
},
mutations: {
test_api (state) {
getUsername()
.then((res) => {
state.username = res.username
})
.catch((err) => {
console.error('getUsername:', err)
})
}
}
})
该请求已成功重播,但我不知道如何处理它,而且我无法找到使用workbox.backgroundSync.Queue
.
就getUsername()
目前而言,请求失败了,但是我如何让调用函数从中断的地方继续?
我认为不需要定期检查队列中的请求以“手动”重新触发(而不是通过自动重播)。我将如何使用队列类从重播请求中获取结果并设置用户名属性?
解决方案
推荐阅读
- python - 使用梯度下降算法时的初始值误差
- python - 为什么同一行代码偶尔会失败?
- python - 可调节游戏大小的井字游戏中的极小极大算法存在问题
- node.js - 是否可以在 GraphQL 查询中弃用输入参数?
- android - 如何使用 Firebase ML Kit 识别拉丁语
- swift - 如何使用 Swift 中的协议获取 tableview 单元格内的所有 collectionview 单元格索引
- c# - 如何使用 MLAPI 在 Unity 中为本地客户端和远程客户端生成不同的预制件?
- java - 如何在另一个类中调用位置监听器的内置方法
- ckeditor - ckeditor 5 自定义构建不适用于源编辑插件
- android - 在 Android 中转换数字的数学函数 - Kotlin