javascript利用回调函数解决异步困扰

2023-11-02

虽然已经存在promise,StratifiedJS等工具用来解决回调地狱,但是讲真,我觉得他们也并没有让代码的可读性大大增强,而且在回调函数的嵌套次数有限的情况下也不至于成为一个“地狱”,所以笔者还是老老实实的继续啃这块js里的板砖——利用回调函数解决javascript异步困扰。


但愿大家可以从下面的这个例子得到些有用的信息:

fun(function(data){ //data:num1
 fun1(num1,function(data){ //data:num2
  fun2(num2,function(data){ //data:num3
    fun3(num3);
  });
 });
});


function fun(callback)
{
  var num1 = 1;
  console.log("begins!");
  callback(num1);
}
function fun1(num1,callback)
{
  var num2 = 2;
  setTimeout(function(){
    console.log(num1);
    callback(num2);
  },3000);
}
function fun2(num2,callback)
{
  var num3 = 3;
  setTimeout(function(){
    console.log(num2);
    callback(num3);
  },2000);
}
function fun3(num3)
{
  setTimeout(function(){
    console.log(num3);
  },1000);
}

输出结果如下图所示:


可以看出函数的执行顺序为fun1---->fun2---->fun3,是按照我们回调函数嵌套,由外层向内层执行,达到了某种意义上的顺序执行。





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript利用回调函数解决异步困扰 的相关文章

随机推荐

  • 基于顺序存储结构的图书信息表的创建和输出

    基于顺序存储结构的图书信息表的创建和输出 描述 定义一个包含图书信息 书号 书名 价格 的顺序表 读入相应的图书数据来完成图书信息表的创建 然后统计图书表中的图书个数 同时逐行输出每本图书的信息 输入 输入n 1行 其中前n行是n本图书的信
  • 设计模式——外观模式

    一 外观模式 1 1 概述 在现实生活中 常常存在办事较复杂的例子 如办房产证或注册一家公司 有时要同多个部门联系 这时要是有一个综合部门能解决一切手续问题就好了 有些人可能炒过股票 但其实大部分人都不太懂 这种没有足够了解证券知识的情况下
  • windows+vscode+git+github 保姆级使用教程

    windows vscode git github 保姆级使用教程 关于git和github 抛开官方定义 这里通俗地解释下他们的关系 我们常用github这个网站来存取代码 基本存取的方式是git 更便捷的存取的方式是vscode 举个例
  • 【实验报告】实验三 交换机的配置

    实验三 交换机的配置 第一个实验 用两台思科2960交换机构建如下拓扑结构的局域网 作业 1 请同学们参照上诉完成对另外一个交换机的相关配置 也划分初 vlan2 vlan3 和 vlan4 配置完毕后请同学们利用 PC0 ping PC1
  • 【pulsar学习】kafka存在的问题与pulsar应用场景

    文章目录 kafka存在的问题 pulsar的应用场景 kafka存在的问题 Kafka 很难进行扩展 因为 Kafka 把消息持久化在 broker 中 迁移主题分区时 需要把分区的数据完全复制到其他 broker 中 这个操作非常耗时
  • Flutter 通过命名路游跳转页面

    1 定义路由陆游 这里我们建一个存放路游的类 定义跳转页面使用 class Routers static String root splash static String login login static String work sor
  • 一文教你玩转Mybatis,超详细代码讲解与实战

    一 Mybatis 入门 1 1 什么是MyBatis MyBatis本是apache的一个开源项目iBatis 2010年这个项目由apache software foundation迁移到了google code 并且改名为MyBati
  • vue使用elementUI中日期选择器

    vue使用elementUI中日期选择器 需求 默认选中近一个月的 仅能选择今天到三年前的日期 今天以后的日期不可选
  • cisco: L2TP over ipsec的配置(1)

    用WINDOWS的L2TP客户端进行VPN连接时默认情况下是进行IPSEC加密的 当然通过更改注册表可以使L2TP不用IPSEC加密 不过在这里我们是要在CISCO路由器下进行L2TP OVER IPSEC的相关配置 使得用户可以在不更改注
  • 文件属性与目录

    目录 Linux 系统中的文件类型 7种 普通文件 目录文件 字符设备文件和块设备文件 符号链接文件 管道文件 套接字文件 stat 函数 struct stat 结构体 st mode 变量 struct timespec 结构体 练习
  • 有了这15款编程游戏,谁都可以学编程!

    1 Coding Games 一边玩游戏 一边挑战编程难题 Coding games支持包括PHP C JavaScript在内的20多种编程语言 用户界面功能强大 可以定制 例如 你可以选择你的代码编辑器的风格 Emacs Vim Cla
  • unity 2017.3 Tips 重置场景后变暗(丢失烘焙效果)

    Unity 2017 3重置游戏场景后场景变暗 这是重置场景的代码 其实就是重新载入本场景 SceneManager LoadScene int 原因 选择的光照模式是实时光照 编辑器在当前场景时 它的灯光是已经渲染好了 但重新加载的时候灯
  • 海量数据随机抽样问题(蓄水池问题)

    海量数据随机抽样问题 蓄水池问题 随机抽样问题表示如下 要求从N个元素中随机的抽取k个元素 其中N无法确定 这种应用的场景一般是数据流的情况下 由于数据只能被读取一次 而且数据量很大 并不能全部保存 因此数据量N是无法在抽样开始时确定的 但
  • 使用webpack5搭建vue3项目过程记录(详细注解)

    在开始搭建之前 首先理清楚webpack的五大核心概念 1 entry 入口 指示 Webpack 从哪个文件开始打包 2 output 输出 指示 Webpack 打包完的文件输出到哪里去 如何命名等 3 loader 加载器 webpa
  • TypeError: not all arguments converted during string formatting问题解决

    python中TypeError not all arguments converted during string formatting解决方法 例如 gt gt gt str 1 2 3 创建一个集合 gt gt gt str 1 2
  • 4.4 服务器上的 Git - 配置服务器

    4 4 服务器上的 Git 配置服务器 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 25 初稿 目录 文章目录 4 4 服务器上的 Git 配置服务器 版本说明 目录 配置服务器 配置服务器 我们来看看如何配置服务器端
  • axios设置请求头无效,采用axios请求拦截实现

    axios 的运用 目录 axios 的运用 axios 请求头设置相关问题 axios 设置请求头的几种方式 以 token 为例 1 全局修改源码配置项 2 在单个请求中设置 3 在新建的实例中设置 4 在 axios 提供的请求拦截器
  • 大数据和位置智能:助力企业数字化战略落地

    大数据和位置智能可以在建立用户信任 提高品牌忠诚度 辅助企业运营决策 实现差异化竞争四个方面助力企业数字化落地 麦当劳不是卖汉堡的 它的本质是房地产商 这句话出自约翰 李 汉考执导的麦当劳公司创始人Ray Kroc的传记片 大创业家 作为风
  • sklearn-数据预处理与特征工程

    1 数据预处理 Preprocessing Impute preprocessing MinMaxScaler数据归一化 MinMaxScaler有一个重要参数 feature range 控制我们希望把数据压缩到的范围 默认是 0 1 使
  • javascript利用回调函数解决异步困扰

    虽然已经存在promise StratifiedJS等工具用来解决回调地狱 但是讲真 我觉得他们也并没有让代码的可读性大大增强 而且在回调函数的嵌套次数有限的情况下也不至于成为一个 地狱 所以笔者还是老老实实的继续啃这块js里的板砖 利用回