61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
//处理断网重连后数据刷新的混入
|
|
export default {
|
|
data() {
|
|
return {
|
|
// 注册需要在网络恢复时调用的方法名
|
|
recoveryMethods: [],
|
|
// 上次调用这些方法时的参数
|
|
methodParams: {}
|
|
};
|
|
},
|
|
|
|
methods: {
|
|
/**
|
|
* 注册需要在网络恢复时自动重新调用的方法
|
|
* @param {String} methodName - 方法名
|
|
* @param {*} params - 调用方法时需要的参数
|
|
*/
|
|
registerRecoveryMethod(methodName, params) {
|
|
if (typeof this[methodName] === 'function' && !this.recoveryMethods.includes(methodName)) {
|
|
this.recoveryMethods.push(methodName);
|
|
this.methodParams[methodName] = params;
|
|
console.log(`[NetworkRecovery] 注册方法: ${methodName}`);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 更新方法的参数
|
|
* @param {String} methodName - 方法名
|
|
* @param {*} params - 新的参数
|
|
*/
|
|
updateMethodParams(methodName, params) {
|
|
if (this.recoveryMethods.includes(methodName)) {
|
|
this.methodParams[methodName] = params;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 网络恢复后调用所有注册的方法
|
|
*/
|
|
handleNetworkRecovery() {
|
|
console.log('[NetworkRecovery] 网络已恢复,正在刷新数据...');
|
|
this.recoveryMethods.forEach(methodName => {
|
|
if (typeof this[methodName] === 'function') {
|
|
const params = this.methodParams[methodName];
|
|
console.log(`[NetworkRecovery] 重新调用方法: ${methodName}`);
|
|
this[methodName](params);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
mounted() {
|
|
// 监听网络恢复事件
|
|
window.addEventListener('network-retry-complete', this.handleNetworkRecovery);
|
|
},
|
|
|
|
beforeDestroy() {
|
|
// 清理事件监听
|
|
window.removeEventListener('network-retry-complete', this.handleNetworkRecovery);
|
|
}
|
|
}; |