請求競態問題
場景:
1. 某一頁面查詢數據時,發起第一次請求
2. 修改查詢條件后,發起第二次請求
3. 當第一次請求返回時間遲于第二次請求,此時第一次結果覆蓋第二次頁面結果,導致查詢條件與展示結果不一致問題
解決方法:
- 再次發起請求時,取消上次請求
let controller = null; let loading = false; let timer = null; const getData01 = (time) => { if (loading) { controller.abort(); } controller = new AbortController(); loading = true; return fetch('http://localhost:7002', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ time },), signal: controller.signal }) .then(res => { loading = false; return res.json() }) .catch(err => { return Promise.reject(err); }) } // click觸發 let t = 5; const handleClick = () => { timeDom.innerText = `次數:${t}`; getData01(t).then((data) => { const { message, } = data; fruitDom.innerText = `水果:${message}`; }).catch((err) => { console.log('err', err) }); t--; }
- 其他請求的解決方式 https://blog.csdn.net/xgangzai/article/details/131427694

浙公網安備 33010602011771號