js利用递归与promise 按顺序请求数据的方法
作者:wangnima666 时间:2024-06-05 09:34:58
问题:项目中有一个需求,一个tabBar下面如果没有内容就不让该tabBar显示,当然至于有没有内容,需要我们通过请求的来判断,但是由于请求是异步的,如何让请求按照tabBar的顺序进行?
方案:我们可以将promise变成下一个请求,可以利用递归来实现
实施:
//定义初始数据 requestlist就像tabBar列表
let requestlist = [1, 2, 3, 4, 5, 6, 7,8,9];
//每个tabBar的返回数据使用reslist装起来
let reslist = [];
function startapi() {
//定义counts,用来收集请求的次数,(也可以用reslist的length进行判断)
let counts = 0;
return function apirequest() {
let arg =arguments[0]
let a = new Promise((res, rej) => {
//setTimeout模拟请求到接收的时间需要5秒钟
setTimeout(function () {
res('成功返回数据');
},100)
})
//无论成功或者失败都要进行下一次,以免阻塞,成功请求的末尾有s标志,失败的末尾有f标志
a.then(() => {
counts++;
if (counts > requestlist.length) {
return;
}
console.log(counts)
//1,假设当前请求出错的时候我们认为这不合法,假设此时counts为3
if(counts==3){
throw new Error('第三个失败')
}
//2,假设当前请求下没有数据的时候我们认为不合法 ,假设此时counts为4
if(counts==4){
reslist.push(arg + 'f');
}
if(counts!=4){
reslist.push(arg + 's');
}
apirequest(requestlist[counts])
console.log(reslist)
}).catch(err => {
reslist.push(arg + 'f');
//递归调用
apirequest(requestlist[counts])
console.log(err)
})
}
}
let newapiget = startapi();
newapiget(requestlist[0])
最终我们打印结果得到:
可以看到第三个和第四个结尾为f
总结
以上所述是小编给大家介绍的js利用递归与promise 按顺序请求数据的方法,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.cnblogs.com/tony-stark/archive/2019/08/29/11431655.html
标签:js,promise,请求数据
0
投稿
猜你喜欢
如何把IP表存到SQL数据库里去?
2009-11-02 20:21:00
详解Mysql主从同步配置实战
2024-01-14 16:36:13
详解pytorch的多GPU训练的两种方式
2023-08-04 09:58:29
python指定路径斜杠与反斜杠遇到的问题
2023-03-18 20:47:27
浅析Banner构成与创意设计
2009-11-28 16:25:00
kettle 入门使用教程(最新版)
2023-04-12 21:28:12
oracle 存储过程加密的方法
2024-01-13 12:49:10
存储过程的输出参数,返回值与结果集
2024-01-17 21:44:30
Python 异步之推导式示例详解
2021-05-16 17:31:08
MySQL错误Forcing close of thread的两种解决方法
2024-01-25 15:24:44
numpy.ndarray 实现对特定行或列取值
2022-05-14 09:17:24
小议sqlserver数据库主键选取策略
2024-01-25 15:03:52
Vue中使用vee-validate表单验证的方法
2024-06-05 15:29:04
Python docx库代码演示
2021-12-11 12:18:02
利用Python将多张图片合成视频的实现
2022-09-16 07:10:26
教你如何使用Python实现二叉树结构及三种遍历
2021-04-30 14:08:00
Python Numpy之linspace用法说明
2021-10-17 10:49:55
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2022-09-24 01:38:47
SQL2005查看死锁存储过程sp_who_lock
2024-01-12 20:34:13
使用Python自动生成HTML的方法示例
2022-08-12 12:12:18