Promise
Promise的基本概念
Promise是一个构造函数
我们可以创建Promise的实例 const p = new Promise()
New出来的Promise实例对象,代表一个异步操作
Promise.prototype上包含一个.then()方法
每一次new Promise()构造函数得到的实例对象,都可以通过原型链的方式访问到.then()方法,,例如p.then()
.then()方法用来预先指定成功和失败的回调函数
- 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 回调函数进行处理。示例代码如下:


浙公网安备 33010602011771号