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

简介: 递归以及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()

4cc37279091341628b4d101b51aaa16d.png

改用递归的方式:

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()

0b1f96f555af4dbcb79fecc9d7007349.png

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

相关文章
|
3月前
|
前端开发 JavaScript 定位技术
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
43 1
|
5月前
|
设计模式 编解码 程序员
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
468 1
探索 C++ 20 (co_await、co_yield 和 co_return)协程基本框架的使用
|
5月前
|
JSON 前端开发 JavaScript
async/await语法
async/await语法
47 0
|
11月前
|
JavaScript 前端开发
asyns和await用法?
asyns和await用法?
|
前端开发
promise ,async/await的基础用法
promise ,async/await的基础用法
|
前端开发 JavaScript
从 async 和 await 函数返回值说原理
昨天在文章《JavaScript中的 async 和 await》中简单的介绍了其使用方法。那么 async 和 await 如何工作,如何正确的使用 async 和 await 。
374 0
|
前端开发
async和await关键字
async(异步)用于定义一个异步函数。异步函数是一种返回 Promise 对象的函数,可以使用 await 关键字等待异步操作的结果,以同步的方式处理异步操作。
|
前端开发
循环中使用async_await
循环中使用async_await,多种方法,按需取用
71 0
|
前端开发
【收藏】五种在循环中使用 async/await 的方法
本篇总结了 5 种在循环中使用 async/await 的方法(代码干货都能在浏览器控制台自测):
|
前端开发
await表达式
await表达式
158 0