递归以及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

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

目录
相关文章
|
7月前
|
JSON API 数据格式
深度分析大麦网API接口,用Python脚本实现
大麦网为国内领先演出票务平台,提供演唱会、话剧、体育赛事等票务服务。本文基于抓包分析其非官方接口,并提供Python调用方案,涵盖演出列表查询、详情获取及城市列表获取。需注意非官方接口存在稳定性风险,使用时应遵守平台规则,控制请求频率,防范封禁与法律风险。适用于个人学习、演出信息监控等场景。
|
7月前
|
Web App开发 小程序 网络安全
Charles抓包微信小程序请求响应数据
Charles抓包微信小程序请求响应数据
972 0
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
9月前
|
数据安全/隐私保护 UED
2025 年 Adobe Acrobat Reader、万兴 PDF 阅读器、Sumatra PDF 三款高性价比 PDF 阅读器推荐
本文介绍了三款PDF阅读器:`Adobe Acrobat Reader DC`、`万兴PDF阅读器`和`Sumatra PDF`。其中,`Adobe Acrobat Reader DC`功能全面,支持签名、批注、表单处理等高阶操作,适合专业需求;`万兴PDF阅读器`不仅阅读便捷,还提供强大的格式转换与编辑功能,支持批量操作;`Sumatra PDF`则以轻量级和快速打开著称,适合简单阅读需求。根据个人需求选择合适的工具,下载链接已提供。
843 0
|
运维 监控 网络协议
IPv6地址之间的转换技术:NAT66
【4月更文挑战第25天】
2657 0
IPv6地址之间的转换技术:NAT66
解决 Blocked a frame with origin “xxx“ from accessing a cross-origin frame
解决 Blocked a frame with origin “xxx“ from accessing a cross-origin frame
5485 0
|
JavaScript 前端开发 API
vue3的传送门teleport究竟有多神奇?suspense发起异步请求有多简约?
该文章介绍了Vue3中新特性Teleport和Suspense的使用方法,演示了如何使用Teleport进行DOM节点的非父子关系传送,以及Suspense在处理异步组件加载时的优雅展示和错误处理技巧。
|
前端开发
视觉充电:CSS动画特效,为网站带来动力与活力!(一键复制)
视觉充电:CSS动画特效,为网站带来动力与活力!(一键复制)
|
存储 JavaScript 前端开发
vue在页面使用Vue.prototype全局变量
【6月更文挑战第3天】Vue.prototype 是 Vue 实例的原型对象,用于添加全局属性和方法。通过修改 Vue.prototype,所有 Vue 实例都能访问这些属性和方法。例如,可在 mai
659 1
|
存储 数据库
微信云开发--云函数--联表查询( lookup 的使用方法详解)
微信云开发--云函数--联表查询( lookup 的使用方法详解)
445 0

热门文章

最新文章