Promise 异步编程

「callback hell」の画像検索結果

阮大神的总结 es6中讲解

回调地狱

​ 不能够保证异步编程的执行顺序,例如读取不同的文件

为了固定文件的读取顺序,可以在异步读取中进行嵌套

为了解决回调嵌套的问题,ES6中新增了promise API解决这个问题

具体实现

  • 首先定义一个Promise对象,对象中的函数会立即执行,函数有两个回调函数用于接收执行程序中的结果或报错信息

  • resolve&reject

  • Promise对象使用then方法可以获取程序的执行结果并且进入下一个依赖的程序

  • then函数的参数都是可选的,即可以不看Promise对象的执行结果直接执行下一个程序,也可以给函数一个data参数,获取Promise对象执行成功后的数据

实例

1.使用函数进行封装

为了避免promise对象一被创建就进入执行状态,使用函数将promise对象封装在函数作用域;通过调用函数来执行promise

2.在promise实例对象中传入要执行的函数

函数带了两个回调函数,分别对应了成功的回调函数resolve与失败的回调函数reject

  • 当要进行的操作成功或者失败时,将对应的函数与数据返回给Promise实例对象

  • Promise对象使用对应的then方法处理两个回调函数

3. 使用then方法进行promise串联

  • then 方法接受两个回调函数,成功的回调必须写而失败的回调可以不写

4.解决promise执行中出错的问题

  • 1.出错之后继续异步执行

    在then的第二个位置传递出错的回调函数,函数返回下一个promise

  • 2. 抛出错误,结束异步执行

    使用catch捕获异常,传递异常处理函数

  • 3. 如果同时写了这两种处理方法的话,catch是不能够生效的

Last updated

Was this helpful?