微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Promise

1.回调地狱

  多层回调函数的相互嵌套,形成了回调地狱

  缺点:代码耦合性太强,牵一发而动全身,难以维护

      大量冗余的代码相互嵌套,代码的可读性变差

2.如何解决回调地狱的问题

  ES6中新增Promise解决回调地狱问题

3.Promise基本概念

  (1)是一个构造函数:可以创建Promise的实例 const p = new Promise(),new出来的Promise对象,代表一异步操作

  (2)Promise.prototype(原型对象)上包含一个 .then() 方法

    每一次new Promise()构造函数得到的实例对象都可以通过原型链的方法访问到 .then 方法,例如:p.then()

 

 

   (3).then() 方法用来预先指定成功和失败的回调函数

    p.then(成功的回调函数,失败的回调函数)

    p.then(result => { },error => { })

    调用 .then() 方法时,成功的回调函数是必选的,失败的回调函数是可选的

4.基于回调函数按顺序读取文件内容

   

 

 5.基于then-fs 读取文件内容

  安装 then-fs 这个第三方包,从而支持我们基于Promise的方式读取文件内容

  (1)then-fs的基本使用

    调用 then-fs 提供的 readFile() 方法,可以异步的读取文件内容,它的返回值是Promise的实例对象

 

(注意:上述代码无法保证文件 的读取顺序,需要进一步改进!)

  (2).then() 方法特性

    上一个 .then() 方法中返回了一个新的promise实例对象,则下一个 .then()继续进行处理( .then() 方法的链式调用

 

   (3)通过 .catch 捕获错误 

 

   如果不希望前面的错误影响后续的 .then() 执行,则可以将 .catch() 的调用提前

 

 6.Promise.all() 方法

  会发起并行的Promise异步操作,等待机制,等所有的异步操作结束后才会执行下一步的.then操作

 

 7.Promise.race() 方法

  会发起并行的Promise异步操作,只要任何一个异步操作完成,就立即执行下一步的 .then() 操作(赛跑机制)

  

 

 8.基于Promise封装文件方法

  (1)方法的封装要求:

    (1)方法名称要定义为 getFile

    (2)方法接受一个形参 fpath,表示要读取的文件的路径

    (3)方法的返回值为Promise实例对象

    

  (2)创建具体的异步操作

    需要在 new Promise() 构造函数期间,传递一个 function函数,将具体的异步操作定义到function函数内部

 

  (3) 获取.then() 的两个实参

      Promise异步操作的结果,可以调用 resolve 或reject 回调函数进行处理

 

 

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐