什么是回调地狱?(代码执行顺序的一种操作(解决异步))

回调地狱的概念:回调函数里面嵌套回调函数。

     //地狱回调setTimeout(function () {  //第一层console.log('111');//等3秒打印111在执行下一个回调函数setTimeout(function () {  //第二层console.log('222');//等2秒打印222在执行下一个回调函数setTimeout(function () {   //第三层console.log('333');//等一秒打印333}, 1000)}, 2000)}, 3000)

执行结果:


解决回调地狱的方法:

方法一:使用promise链式调用

     //promise解决function fn(str) {var promise = new Promise(function (success, error) { //success 是成功的方法  error是失败的方法  //处理异步任务var flag = true;setTimeout(function () {if (flag) {success(str)}else {error('失败')}})})return promise;}fn('111').then((res) => { //then是成功执行的方法 返回的还是一个promise对象console.log(res);//打印111  res是执行return fn('222');}).then((res) => {console.log(res);return fn('333')}).then((res) => {console.log(res);}).catch((res) => { //catch是失败执行的方法console.log(res);})

执行结果:可以看到还是会嵌套,存在回调函数,不是最完美的解决方法


方法二:使用 async/await 终极解决方案(无回调函数,同步执行)

//1.封装一个返回promise的异步任务function fn(str) {var promise = new Promise(function (success, error) {var flag = true;setTimeout(function () {if (flag) {success(str)} else {error('处理失败')}})})return promise;}//2.封装一个执行上述异步任务的async函数async function test() {try{var res1 = await fn('111');  //await直接拿到fn()返回的promise的数据,并且赋值给resvar res2 = await fn('222');var res3 = await fn('333');console.log(res1);console.log(res2);console.log(res3);} catch(error){console.log("抛出异常错误: "+error);}}//3.执行函数test();

什么是回调地狱?解决回调地狱的方法相关推荐

  1. 什么是地狱回调?解决回调地狱的两种方法

    地狱回调概念:回调函数套回调函数的情况就叫做回调地狱, //地狱回调setTimeout(function () { //第一层console.log('武林要以和为贵');setTimeout(fu ...

  2. 什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?

    什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题? 参考文章: (1)什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题? (2)https://www.cnblogs.com/kzxi ...

  3. Promise使用,return的运用,解决回调地狱

    Promise使用,return的运用,解决回调地狱 回调地狱 httpBookModel.getHotList().then((res) => {console.log(res)httpBoo ...

  4. Promise解决回调地狱写法

    这里可以使用Promise来解决回调地狱的问题! 那么我们这里有一个需求,就是我们需要读取三个 .txt 文件,需要第一个文件读取完成后才能读取第二个文件以此类推. 那么这里来一个Promise的错误 ...

  5. 回调函数与回调地狱及其解决方法 | JavaScript

    JavaScript中的回调函数与回调地狱及其解决方法 以下为整理的思维导图 图片版+文字版 文末附有参考文章链接 知识点思维导图版 一.什么是回调函数 1.MDN的定义 回调函数是作为参数传给另一个 ...

  6. Promise(解决回调地狱)

    Promise() 对象: 存在三种状态: //进行时 pending// 成功 resolve//失败 reject 执行语句: let promise= new Promise((resolve, ...

  7. ES6----promise方法解决回调地狱问题

    ES6–promise方法解决回调地狱问题 要解决回调地狱问题,首先要了解回调地狱的产生是由于早期的javascript只支持回调函数来表现异步操作完成,由于业务逻辑复杂时,就会出现一个串联多个异步操 ...

  8. promise解决回调地狱(callback hell)

    promise解决回调地狱(callback hell) 具体参考 阮一峰,ES6标准入门 在我们需要对一个异步操作进行频繁的调用的时候,且要保证一步操作的顺序,可能会出现 回调地狱(callback ...

  9. Promise的基础使用与生成器配合Promise解决回调地狱

    经过几天对Promise的了解,希望可以帮助到大家. 什么是回调地狱         说起回调地狱 首先想到的是异步 在js中我们经常会大量使用异步回调,常用的ajxa请求 来看下面这段代码: fun ...

  10. 回调地狱的产生,以及如何解决回调地狱

    前言 在了解回调地狱之前,我们先来了解两个概念: 1. 回调函数 当一个函数作为参数传入另一个参数中,并且它不会立即执行,只有当满足一定条件后该函数才可以执行,这种函数就称为回调函数.我们熟悉的定时器 ...

最新文章

  1. GPP加密破解工具gpp-decrypt
  2. JQ和Js获取span标签的内容
  3. 【SpringBoot】SpringBoot整合SpringDataJPA及基本使用
  4. linux 两个驱动 竞争,Linux设备驱动第五章(并发和竞争)读书笔记(国外英文资料).doc...
  5. elasticsearch中cluster和transport知识
  6. java 切面_实用|AOP切面编程手段大汇总
  7. DJango 多条件查询结果分页
  8. html链接基本语法,链接(link)基本语法
  9. 视频码率、分辨率、帧率的关系
  10. 手机怎么把两寸照改成一寸照?这个方法既简单又好用
  11. ESLint语法检查--semi(分号)规则
  12. indesign页眉如何左右分布_InDesign排版技巧
  13. ABP VNext学习日记21
  14. 从项目中学习Django 天天生鲜---------前台商品展示
  15. postgresql获取当前或某一时间段的年月日
  16. Effictive STL读书笔记
  17. 微信小程序中使用阿里巴巴图标库
  18. 代码随想录算法训练营第二天|LeetCode 977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II
  19. 三个朋友圈营销小技巧
  20. pdf转word转换器在线

热门文章

  1. 《秘密》吸引力法则 书摘
  2. Java面试100问
  3. 注册会计师,【会计科目】考试经验,另附一些整理好的网课,东奥,中华
  4. 水下机器人之电池选择
  5. jssc4.2.2语法高亮插件
  6. ThreadingTest软件测试界顶层设计--由中国人引领的数字化软件测试时代来了
  7. 程序丸子的校招个人经验——简历篇
  8. 【WIFI】WiFi驱动中的Band Steering功能
  9. 硬核帅气!今年成都世警会,还藏着这么多小秘密!
  10. Ubuntu安装部署owncloud私有云问题解决