react 遇到两个异步网络请求顺序问题

Created
Feb 9, 2022 11:07 AM
Tags
两个Tab分别前后点击分别请求两次api,获得两组数据,如果第一个请求速度比第二个慢,第一个请求获得的数据回覆盖第二个请求得到的数据,这样违反了请求的顺序,造成了Race。
用一种比较丑陋的办法可以解决这个问题
const checkIsFetching = (func) => { clearTimeout(checkingIsFetchingTimer.current); if (isFetchingRef.current) { checkingIsFetchingTimer.current = setInterval(() => { if (!isFetchingRef.current) { func(); clearTimeout(checkingIsFetchingTimer.current); } }, 100); } else { func(); } };
在请求数据前添加isfetching = true
在得到数据后把锁打开
在请求数据前把function 用checkIsFetching 包裹一下,检查当前是否有请求在被发送。
如果正在发送就阻止,等锁解开后再发出请求