Promise学习笔记
1.Promise适用场景
通常调用某些异步,都是传入回调函数,等待异步执行完之后再调用回调函数。可是当回调过多的时候就不方便阅读与维护
Promise链式调用的风格,书写方式都让程序变得更好维护
2.Promise
1.它有三种状态
- pending:进行中
- fulfilled :已经成功
- rejected 已经失败
2.状态改变
- 从pending变为fulfilled
从pending变为rejected。
状态被改变之后就不能再改变,无法逆向转变
3.then方法
then方法接受两个参数,第一个参数是成功时的回调,在Promise由“等待”态转换到“完成”态时调用,另一个是失败时的回调,在Promise由“等待”态转换到“拒绝”态时调用
3.Promise Methods
1. Promise.all(iterable) //将多个Promise包装成一个Promise适合可以处理多个异步事件,有成功和失败两种情况
1 | //成功的时候 |
1 | let p1 = new Promise((resolve, reject) => { |
2.Promise.race(iterable)
1 | let p1 = new Promise((resolve, reject) => { |
#####
3 . Promise.resolve(value)
1 | Promise.resolve('foo') |
4 . Promise.reject() //生成错误的一个promise对象
1 | Promise.reject(new Error("error")); |
一般情况下我们都会使用new Promise()来创建promise对象,但是我们也可以使用promise.resolve 和 promise.reject这两个方法
4.Promise prototype
1.Promise.prototype.catch(onRejected)
1 | function p1(){ |
2.Promise.prototype.then(onFulfilled, onRejected)
1 | //then 方法接受两个参数:onFulfilled 和 onRejected 都是可选参数 |
如果没有返回值,那就是undefined。
1 | let func = function() { |
5.创建一个Promise
1 | const myFirstPromise = new Promise((resolve, reject) => { |
使用关键字new创建Promise对象,构造函数接受一个函数作为参数,这个函数又接受两个函数作为参数(resolve与reject)。
resolve在异步操作成功的时候调用,并将异步操作的结果作为参数传出。
reject在异步操作失败的时候调用,将失败结果传出