vue中數(shù)據(jù)狀態(tài)輪詢過程
vue中數(shù)據(jù)狀態(tài)輪詢
1、數(shù)據(jù)接口和狀態(tài)接口是分開的
首先在頁面掛在后請(qǐng)求數(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中定義定時(shí)器:
data() {
return {
pollStatusTimer: null,
}
}
輪詢和結(jié)束輪詢一級(jí)狀態(tài)接口如下:
pollStatus() {
this.endPollStatus(this.pollStatusTimer);//防止有未清除的定時(shí)器
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();
}
}
},
最后,要在組件銷毀前清空定時(shí)器,防止內(nèi)存泄漏
2、無單獨(dú)的狀態(tài)接口
如果沒有單獨(dú)的狀態(tài)接口,把狀態(tài)方法getDatasetStatus換成數(shù)據(jù)方法getTableDataList即可
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue實(shí)現(xiàn)動(dòng)態(tài)按鈕功能
這篇文章主要介紹了vue實(shí)現(xiàn)動(dòng)態(tài)按鈕功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Vite處理html模板插件之vite-plugin-html插件使用
這篇文章主要給大家介紹了關(guān)于Vite處理html模板插件之vite-plugin-html插件使用的相關(guān)資料,Vite是一個(gè)現(xiàn)代化的前端構(gòu)建工具,而vite-plugin-html是Vite的一個(gè)插件,用于在構(gòu)建時(shí)自動(dòng)生成HTML文件,需要的朋友可以參考下2023-10-10
vue網(wǎng)絡(luò)請(qǐng)求方案原生網(wǎng)絡(luò)請(qǐng)求和js網(wǎng)絡(luò)請(qǐng)求庫
這篇文章主要為大家介紹了網(wǎng)絡(luò)請(qǐng)求方案原生網(wǎng)絡(luò)請(qǐng)求和js網(wǎng)絡(luò)請(qǐng)求庫的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
Vue實(shí)現(xiàn)DateRange選擇器的禁選功能
在基于Vue.js構(gòu)建的應(yīng)用程序中,處理日期選擇器是一個(gè)常見的需求,尤其是在涉及到日期范圍的選擇時(shí),Vue提供了多種方式來實(shí)現(xiàn)日期選擇器的功能,并允許我們對(duì)這些組件進(jìn)行高度定制,本文將深入探討如何在Vue應(yīng)用中實(shí)現(xiàn)DateRange選擇器的禁選功能,需要的朋友可以參考下2024-10-10
vue element-ui el-table組件自定義合計(jì)(summary-method)的坑
這篇文章主要介紹了vue element-ui el-table組件自定義合計(jì)(summary-method)的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
vue3.2?Composition?API項(xiàng)目依賴升級(jí)
這篇文章主要為大家介紹了vue3.2?Composition?API項(xiàng)目依賴升級(jí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Vue3判斷對(duì)象是否為空的實(shí)現(xiàn)方式
這篇文章主要介紹了Vue3判斷對(duì)象是否為空的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-07-07

