vue中數(shù)據(jù)狀態(tài)輪詢過程
vue中數(shù)據(jù)狀態(tài)輪詢
1、數(shù)據(jù)接口和狀態(tài)接口是分開的
首先在頁面掛在后請求數(shù)據(jù),然后判斷數(shù)據(jù)中狀態(tài)是否有需要輪詢的,有的話就輪詢:
async getTableDataList() {
this.tableLoading = true;
try {
let params = {
page: this.dataPage,
page_size: this.dataPagesize,
}
const res = await this.$axios.get(`url`, { params });
if (res.data.code == 200) {
this.tableLoading = false;
this.dataTableData = res.data.data;
this.dataTotalNumber = res.data.paging.total;
let isExistAnalyzing = this.dataTableData.find((item) => {
if (item.status == 1) {
return item;
}
});
//如果存在分析中的數(shù)據(jù)
if (isExistAnalyzing) {
this.pollStatus();
} else {
this.endPollStatus()
}
} else {
this.tableLoading = false;
this.dataTableData = [];
}
} catch (err) {
console.log(err);
}
},
要在data中定義定時器:
data() {
return {
pollStatusTimer: null,
}
}
輪詢和結(jié)束輪詢一級狀態(tài)接口如下:
pollStatus() {
this.endPollStatus(this.pollStatusTimer);//防止有未清除的定時器
this.pollStatusTimer = setTimeout(() => {
this.getDatasetStatus();
}, 3000);
},
endPollStatus() {
clearTimeout(this.pollStatusTimer);
},
async getDatasetStatus() {
const res = await this.$axios.get(
`url`
);
if (res.data.code == 200) {
let statusList = res.data.data;
this.dataTableData.forEach((item) => {
statusList.forEach((el) => {
if (item.id == el.id) {
item.status = el.status;
item.studyCount = el.studyCount;
item.progress = el.progress == null ? 0 : Number(el.progress);
}
});
});
let incomplete = statusList.find((item) => {
if (item.status == 1) {
return item;
}
});
if (incomplete) {
this.pollStatus();
} else {
this.endPollStatus();
}
}
},
最后,要在組件銷毀前清空定時器,防止內(nèi)存泄漏
2、無單獨的狀態(tài)接口
如果沒有單獨的狀態(tài)接口,把狀態(tài)方法getDatasetStatus換成數(shù)據(jù)方法getTableDataList即可
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vite處理html模板插件之vite-plugin-html插件使用
這篇文章主要給大家介紹了關(guān)于Vite處理html模板插件之vite-plugin-html插件使用的相關(guān)資料,Vite是一個現(xiàn)代化的前端構(gòu)建工具,而vite-plugin-html是Vite的一個插件,用于在構(gòu)建時自動生成HTML文件,需要的朋友可以參考下2023-10-10
vue網(wǎng)絡(luò)請求方案原生網(wǎng)絡(luò)請求和js網(wǎng)絡(luò)請求庫
這篇文章主要為大家介紹了網(wǎng)絡(luò)請求方案原生網(wǎng)絡(luò)請求和js網(wǎng)絡(luò)請求庫的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
vue element-ui el-table組件自定義合計(summary-method)的坑
這篇文章主要介紹了vue element-ui el-table組件自定義合計(summary-method)的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02

