美文网首页
回调地狱以及解决方法

回调地狱以及解决方法

作者: 初柚_eeab | 来源:发表于2019-08-20 16:09 被阅读0次

    很久没有更了,今天就来谈一下回调地狱。回调地狱的官方理解上说的是函数作为参数层层嵌套看起来很好理解,实际上就是我们在做原生JS的时候产生的回调函数,因为函数闭包特性,所以产生层级嵌套,

  当我们在执行DOM事件操作时,浏览器会悄悄向服务端发送很多的没有必要的http请求,携带后台可识别的参数,等待服务器响应返回数据,这个过程是异步回调的,当许多功能需要连续调用,环环相扣依赖时,它就像多层蛋糕一样。代码全部一层一层的嵌套,看起来就很庞大,很难以理解,这种情况下就产生了回调地狱.

    那么回调地狱究竟应该怎样去解决呢?

    出现回调地狱的最主要原因就是自己在编写代码的过程中过于刻板,循规蹈矩,以至于不断在一层函数下接着进行第二层,已达到第二层代码的执行效果。但很明显效果事半功倍。

    首先我们可以在编写自己的代码的过程中可以优化自己的代码,比如说简单的命名函数这一块,我们不能杂乱无章的写一堆出来,可以对函数命名,简单明了。当发生异常时,你将获得引用实际函数名称而不是

  “匿名”的堆栈跟踪。要时刻保持自己的代码简短美观。

    模块化。如果一堆人都去做一件事情,每个人都有自己的思想,如果现在合理分配,每个人都有自己负责的,最后整合到一起是不是会有条理很多呢?同理,这里我们就用到了模块化开发。创建一个JS文件,

  将一些重复出现的代码切割,模块化开发,当有需要的时候直接调用。会简单很多。还有像vue框架中常出现的import文件导出也属于模块化开发。

    还有Promise方法,采用的执行方式也是由上而下的方式。多用在异步编程解决方案上。但是它也是书写代码不美观,有一种缩小版的回调既视感。

    所以比较接近完美的方法比如像Async functions

    Async functions是异步函数是一个建议的ES7功能,它将以更高级别的语法进一步包装生成器和继承

    async 表示这是一个 async 函数,await 只能用在这个函数里面

await 表示在这里等待 Promise 返回结果后,再继续执行

    await 后面跟着的应该是一个 Promise 对象(当然,其他返回值也没关系,只是会立即执行)

await 等待的虽然是 Promise 对象,但不必写  .then() ,可以直接得到返回值

    function buildCatList(list, returnVal) {

    return new Promise(function (resolve, reject) {

      setTimeout(function (name) {

      var catList = list === '' ? name : list + ',' + name

      resolve(catList)

    }, 200, returnVal)

}

    )

}

function fn(list) {

    return list + ',' + 555

}

async function render() {

    var a = await buildCatList('','Panther')

    var b = await buildCatList(a, 'Jaguar')

    var c = await buildCatList(b, 'Lion')

    var d = await fn(c)

    console.log(d)

}

render()

    这样看代码是不是简洁清晰,异步代码也具有了“同步”代码的结构。

相关文章

  • 回调地狱以及解决方法

    很久没有更了,今天就来谈一下回调地狱。回调地狱的官方理解上说的是函数作为参数层层嵌套看起来很好理解,实际上就...

  • Vue - day8

    day8 Promise 引入 回调地狱 回调函数中 嵌套 其他回调函数 例子: 多个文件依次读取 解决方法: ...

  • Promise

    1.为什么需要Promise 回调地狱回调函数中嵌套回调Promise解决了回调地狱 2. Promise 的基本...

  • Promise

    什么是回调地狱 多层回调函数的相互嵌套,就形成了回调地狱 回调地狱的缺点: 代码耦合性太强,牵一发而动全身,难以维...

  • promise

    异步的出现,解救了无数深陷 回调 不能自拔的人们。 1.回调地狱 过深的嵌套,导致回调地狱,难以追踪回调的执行顺序...

  • ES6快速学习(七)Promise

    回调函数 Promise 解决了什么痛点 回调地狱 代码如下 我的第一个Promise使用 解决回调地狱之链式...

  • 回调地狱

    如果你想阅读体验更好,可以戳链接回调地狱 前言 从前一文中你真的了解回调我们已知道回调函数是必须得依赖另一个函数执...

  • 个人笔记

    同步/异步 回调函数=> 回调地狱 setInterval/setTimeout =>Promise=>Gener...

  • ES6(十一)—— Promise(更优的异步编程解决方案)

    目录 说到Promise就不得不说道说道这 —— 回调地狱 Promise —— 解决回调地狱Promise语法规...

  • 14.回调地狱与 Promise

    回调地狱 为了保证异步代码的执行顺序,将异步代码嵌套到回调函数中,当异步的方法多了,就会产生回调地狱(callba...

网友评论

      本文标题:回调地狱以及解决方法

      本文链接:https://www.haomeiwen.com/subject/ztbpsctx.html