0


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

我宁愿你骂我,也不愿意你难过,你难过我会更担心。

递归?

一般便是会问以下几点

1.什么是递归

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

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

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

3.怎么实现一个递归

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

for循环里调用async await

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

functiongetData(n){//通过该接口改变数据// console.log('n',n)returnnewPromise((resolve,reject)=>{setTimeout(()=>{resolve(n+1)//原来的数据上+1},400)})}let data =[0,1,2,3,4,5,6,7,8,9]asyncfunctionsubData(){//提交数据保存for(let i =0;i<data.length;i++){const res =awaitgetData(data[i])
        console.log(res)}//改变数据

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

在这里插入图片描述
改用递归的方式:

functiongetData(n){//通过该接口改变数据// console.log('n',n)returnnewPromise((resolve,reject)=>{setTimeout(()=>{resolve(n+1)//原来的数据上+1},400)})}let data =[0,1,2,3,4,5,6,7,8,9]asyncfunctiondigui(index,arr){if(index<data.length){let res =awaitgetData(data[index])
       console.log(res)
       arr.push(res)awaitdigui(index+1,arr)}return arr
}asyncfunctionsubData(){const newList =awaitdigui(0,[])// console.log(newList)
    console.log('sub')}subData()

在这里插入图片描述
大概就这么些了,希望对你有帮助。


本文转载自: https://blog.csdn.net/qq_32442973/article/details/122549296
版权归原作者 前端纸飞机 所有, 如有侵权,请联系我们删除。

“递归以及for循环里async 和 await 的用法”的评论:

还没有评论