Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k views
in Technique[技术] by (71.8m points)

如果取消异步重复请求问题?

先发起第一个请求:

/api/getTotal?type=all

然后再发起请求:

/api/getTotal?type=1

因为第二次请求快,而第一次请求非常慢,导致页面上的数据会先显示第二次返回的数据,然后又变成第一次请求的数据。请问这种情况要怎么处理比较好呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

可以封装一个方法,在发送请求之前,取消上次的请求,取消的方法需要看你用的是什么,比如axios就是cancelToken,jq就是abort等等。你还可以在方法中加一个参数,代表走不走取消流程,走取消流程的怎么走等等。把url当作key,把请求放入一个对象中,下次请求,同样的url就会去对象中获取上次的请求,然后看取不取消。

还可以用队列的方法,设置一个空数组,每次请求都想数组中添加一个数据,可以是请求本身,可以是true之类的数据,记录下当前请求对应的数组下标。请求完成后看当前请求对应的数组下标是不是数组的最后一个,是的话在进行渲染


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...