Promise

Promise的基本概念

Promise是一个构造函数

  我们可以创建Promise的实例 const p = new Promise()

  New出来的Promise实例对象,代表一个异步操作

Promise.prototype上包含一个.then()方法

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

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

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

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

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

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

 

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

3.1 then-fs 的基本使用

调用 then-fs 提供的 readFile() 方法,可以异步地读取文件的内容,它的返回值是 Promise 的实例对象。因此可以调用 .then() 方法为每个 Promise 异步操作指定成功和失败之后的回调函数。示例代码如下:

3.2 .then() 方法的特性

如果上一个 .then() 方法中返回了一个新的 Promise 实例对象,则可以通过下一个 .then() 继续进行处理。通过 .then() 方法的链式调用,就解决了回调地狱的问题。

3.3 基于 Promise 按顺序读取文件的内容

Promise 支持链式调用,从而来解决回调地狱的问题。示例代码如下:

3.4 通过 .catch 捕获错误

Promise 的链式操作中如果发生了错误,可以使用 Promise.prototype.catch 方法进行捕获和处理:

 

 

3.5 Promise.all() 方法

Promise.all() 方法会发起并行的 Promise 异步操作,等所有的异步操作全部结束后才会执行下一步的 .then 操作(等待机制)。示例代码如下:

 

 运行结果:

 

 

3.6 Promise.race() 方法

Promise.race() 方法会发起并行的 Promise 异步操作,只要任何一个异步操作完成,就立即执行下一步的.then 操作(赛跑机制)。示例代码如下:

4. 基于 Promise 封装读文件的方法

方法的封装要求:

① 方法的名称要定义为 getFile

② 方法接收一个形参 fpath,表示要读取的文件的路径

③ 方法的返回值为 Promise 实例对象

4.4 调用 resolve reject 回调函数

Promise 异步操作的结果,可以调用 resolve reject 回调函数进行处理。示例代码如下:

 

 

 

 

 

 

 

 

posted @ 2022-12-20 20:19  llf1_1  阅读(35)  评论(0)    收藏  举报