js使用递归并承诺按顺序请求数据
问题:项目中有要求。如果标签栏下没有内容,标签栏将不会显示。当然,至于有没有内容,需要根据要求来判断。但是,由于请求是异步的,如何按照tabBar的顺序进行请求呢?
方案:我们可以把承诺变成下一个请求,这可以通过递归来实现
实施:
//定义初始数据requestlist就像tabBar list让requestlist=[1,2,3,4,5,6,7,8,9];//每个tabBar的返回数据都用respist打包。让respist=[];函数startapi() {//定义了counts,用于收集请求的数量(也可以通过reslist的长度来判断)。let counts=0;return function API request(){ let arg=arguments[0]let a=new promise((RES,rej)={//settimeout模拟从请求到接收的时间需要5秒。setTimeout(函数(){res('成功返回数据'));},100) }) //不管成功还是失败,下次一定要做,以免阻塞。成功请求的结尾用S标记,失败的结尾用f . a . then(()={ counts;if(counts request list . length){ return;} console.log(counts) //1、假设当前请求错误,我们认为是非法的,假设计数为3 if(counts==3){抛出新的Error('第三个失败')} //2、假设当前请求下没有数据,我们认为是非法的,假设计数为4 if (counts==4) { } if(counts!=4){ reslist . push(arg ' s ');} API request(request list[counts])console . log(reslist)})。catch(err={ reslist . push(arg ' f ');//递归调用API请求(request list[counts])console . log(err)})} }让newa piget=startapi();最后,我们打印结果并得到:
你可以看到第三和第四个以f结尾。
摘要
以上是js使用递归并承诺按边肖介绍的顺序请求数据的方法。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!
版权声明:js使用递归并承诺按顺序请求数据是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。