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

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

fun(function(data){ //data:num1fun1(num1,function(data){ //data:num2fun2(num2,function(data){ //data:num3fun3(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,是按照我们回调函数嵌套,由外层向内层执行,达到了某种意义上的顺序执行。

javascript利用回调函数解决异步困扰相关推荐

  1. javascript的回调函数 同步 异步

    后一个任务等待前一个任务结束再执行.程序执行顺序与任务排列顺序一致的,同步的. 参考: http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%B ...

  2. JavaScript利用回调函数完成次序循环打印“红黄绿”灯

    var id;function redLight(a,b,time){ ///l1(l2黄,l3绿,2000)console.log("红灯")clearTimeout(id);i ...

  3. JavaScript:回调函数(callback)

    前言 callback,大家都知道是回调函数的意思.如果让你举些callback的例子,我相信你可以举出一堆.但callback的概念你知道吗?你自己在实际应用中能不能合理利用回调实现功能? 我们在平 ...

  4. 如何用JavaScript的回调函数做出承诺

    by Adham El Banhawy 由Adham El Banhawy 如何用JavaScript的回调函数做出承诺 (How to make a Promise out of a Callbac ...

  5. 有关JavaScript中回调函数的所有内容!

    作者:Shadeed 译者:前端小智 来源:dmitripavlutin 点赞再看,微信搜索**[大迁世界],B站关注[前端小智]**这个没有大厂背景,但有着一股向上积极心态人.本文 GitHub h ...

  6. 彻底理解JavaScript中回调函数 (推荐)

    在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply() ...

  7. ajax回调函数有时成功有时失败,javascript - Ajax 回调函数行为随机。我做错了什么?...

    我有以下行为随机的 ajax 函数.有时会显示警报 success finally.在其他情况下,第二个警报是 显示 Failure: my status is 500. promptId 从调用函数 ...

  8. js回调函数获取异步返回值

    js回调函数获取异步返回值 1.尝试获取异步返回值 function test(){var res = 0;setTimeout(function(){res = 1;},1000)return re ...

  9. 计算器(利用回调函数/函数指针数组实现) C语言

    玩点不一样的 一.利用回调函数实现 #include <stdio.h>void menu() {printf("************ 计算器 **********\n&qu ...

最新文章

  1. BERT-Pytorch demo初探
  2. ElementUI Pagination 分页器绑定数据
  3. 最大熵模型(Maximum Entropy Model)文献阅读指南
  4. 安卓图标_干货 | 安卓界面系统规范
  5. MySQL数据库的终结_python中数据库的操作终结
  6. 有图有真相——关于“视频专辑:零基础学习C语言 ”
  7. 四轮驱动(SSMR)移动机器人运动模型及应用分析
  8. rCNN学习笔记二:基于R-CNN的物体检测
  9. RAID0、RAID1、RAID0+1、RAID5原理介绍
  10. war包的打包与解压
  11. 使用8、14、20节点6面体的立方体弹性固体的三维分析(python,有限元)
  12. 【那些年,我们一起追的女孩】第十四章
  13. Day10 多态 final
  14. oracle脚本怎么跑,命令行执行oracle的sql脚本逃跑吧少年秒开钥匙下载最
  15. 真无线蓝牙耳机性价比高?真无线蓝牙耳机性价比排行
  16. 2021年起重机司机(限桥式起重机)最新解析及起重机司机(限桥式起重机)考试试卷
  17. 【BP回归预测】基于matlab随机蛙跳算法SFLA优化神经网络数据回归预测【含Matlab源码 2272期】
  18. Unity编辑器扩展: 程序化打图集工具
  19. 【ARM微型电脑/IoT设备/嵌入式】Linux Ubuntu 树莓派 Jetson nano设置PTP时间同步
  20. 〖Python WEB 自动化测试实战篇⑥〗- selenium元素定位之find-elements

热门文章

  1. 实现免邀请码的APP推广更有效果
  2. 贪吃蛇小游戏代码html,自制贪吃蛇小游戏代码
  3. Mac下 图片批量缩放命令-sips
  4. Save Failed Compilation unit name must end with .java, or one of the registered java-like extension
  5. 更改计算机管理员用户名和密码忘记了怎么办,忘记电脑管理员Administrator密码?使用新建账户能否恢复密码?...
  6. 机器人学习必看系列:如何使用moveit控制真实机械臂?
  7. DHCP全局模式原理和配置
  8. [三分] [BZOJ5041] LWD 的降临
  9. 学习笔记(108):R语言入门基础-par与lwd结合
  10. 房屋装修选择自装,如何寻找砸墙工程队,比价并施工(砸墙阶段)