0
点赞
收藏
分享

微信扫一扫

递归以及for循环里async 和 await 的用法


递归?

一般便是会问以下几点

1.什么是递归

广义上:程序调用自身的编程技巧称为递归( recursion),他是个算法。
有几个要素:递归需要有边界条件、递归前进段、递归返回段。

2.递归能够解决什么问题

阶乘(面试常问),菲波拉锲数(面试常问)、等
阶乘的公式是: n! = 1 * 2 * 3 * 4 * ... * (n-2) * (n-1) * n

3.怎么实现一个递归

//例如:计算5的阶乘
function jie(n){
if(n == 1){//跳出条件
return 1;
}
return n*jie(n-1); //5*jie(4)
}
var result = jie(5);
console.log(result);

for循环里调用async await

需求,遍历一个数组,请求后台接口挨个改变数组每一项,全部改变后再次提交。

function getData(n){//通过该接口改变数据
// console.log('n',n)
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(n+1)//原来的数据上+1
},400)
})
}

let data = [0,1,2,3,4,5,6,7,8,9]

async function subData(){//提交数据保存
for(let i = 0;i<data.length;i++){
const res = await getData(data[i])
console.log(res)
} //改变数据

console.log('sub')//提交数据
}

subData()

递归以及for循环里async 和 await 的用法_javascript

改用递归的方式:

function getData(n){//通过该接口改变数据
// console.log('n',n)
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(n+1)//原来的数据上+1
},400)
})
}

let data = [0,1,2,3,4,5,6,7,8,9]

async function digui(index,arr){
if(index<data.length){
let res = await getData(data[index])
console.log(res)
arr.push(res)
await digui(index+1,arr)
}

return arr
}

async function subData(){
const newList = await digui(0,[])
// console.log(newList)
console.log('sub')
}

subData()

递归以及for循环里async 和 await 的用法_javascript_02

大概就这么些了,希望对你有帮助。



举报

相关推荐

0 条评论