1. promise异步编程
promise
对象代表一个异步操作,有三种状态:pending
(进行中),fulfilled(resolved)
(已成功),rejected
(已失败)。
特点:
- 对象的状态不受外界影响
- 一旦状态改变,就不会再变,任何时候都可以得到这个结果
注: promise状态改变只有两种可能:
pending —> fulfilled
,pending —> rejected
实例方法:
Promise.prototype.then()
:为promise
实例添加状态改变时的回调函数,第一个参数为resolved
状态回调函数,第二个(可选)为rejected
状态的回调函数,返回一个新的promise
实例。Promise.prototype.catch()
:用于指定发生错误时的回调函数,参数为rejected
状态回调函数,返回一个新promise
对象。Promise.prototype.finally()
:用于指定不管promise
对象最后状态如何,都会执行的操作,其回调函数不接受任何参数。
promise基本实例:
const promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
promise
.then(result => {
···})
.catch(error => {
···})
.finally(() => {
···});
promise方法:
Promise.all()
:const p = Promise.all([p1, p2, p3]);
- 只有
p1,p2,p3
的状态都变成fulfilled
,p
的状态才会变成fulfilled
,此时