Promise-解决回调地狱
1.用ES6中 promise
解决回调地狱.
1. Promise 是一个构造函数,既然是构造函数,那么,我们就可以 new Promise () 得到一 个Promise的实例;
2. 在Promise 上,有两个函数1分别叫做resolve (成功之后的回调函数)和reject (失败之后的回调函数)
由于 Promise 的实例,是一个异步操作,所以,内部拿到操作的结果后,无法使用return把操作的结果返回给调用者;这时候,只能使用回调函数的形式,来把成功或失败的结果,返回给调用者;
3. 在Promise 构造函数的Prototype 属性上,有一个.then()
方法,也就说,只要是Promise构造函数创建的实例,都可以访问到.then()
方法
4. Promise 表示一个异步操作;每当我们new一个Promise 的实例,这个实例,就表示个具体的异步操作;
5. 既然Promise 创建的实例,是一个异步操作,那么,这个异步操作的结果,只能有两种状态:
- 状态1 :异步执行成功了,需要在内部调用成功的回调函数resolve把结果返回给调用者;
- 状态2 :异步执行失败了,需要在内部调用失败的回调函数reject把结果返回给调用者;
6. 每当我们new一个Promise实例的时候,就会立即执行这个一步操作的代码,例如
1 | const fs = require('fs') |
执行该文件:
如果不想让他立即执行,则将这个 new的promise 放在一个函数里面,并为这个函数传一个路径
fpath
,再调用函数即可
7. 我们可以在new出来的Promise 实例上,调用.then()
方法,预先为这个Promise 异步操作,指定成功(resolve)和失败(reject)回调函数;
1 | .then(function(data){ |
8.Promise正确打开方式:
1 |
|
执行:
- 因为我在第一次读文件的时候,故意填了一个错误的文件名,所以这里会捕捉一个错误,但是不会影响后面的执行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WesleyBee BLOG!