什么是Promise
Promise 是异步编程的一种解决方案。ES6中已经提供了原生Promise
对象。一个Promise
对象会处于以下几种状态(fulfilled,rejected两种状态一旦确定后不会改变):
- 待定(pending): 初始状态,既没有被兑现,也没有被拒绝。
- 已兑现(fulfilled): 意味着操作成功完成。
- 已拒绝(rejected): 意味着操作失败。
基本用法
Promise
对象是一个构造函数,用来创建Promise
实例,它接收两个参数resolve
和reject
。
resolve
的作用是将Promise
对象的状态从pending
变为fulfilled
,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去。reject
的作用是将Promise
对象的状态从pending
变为rejected
,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
const promise = new Promise(function(resolve, reject) {
// ...
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
Promise
实例生成以后,使用then
方法分别指定fulfilled
状态和rejected
状态的回调函数。
then
接收两个参数,第一个是Promise
对象的状态变为fulfilled
时的回调函数,第二个是状态变为rejected
时的回调函数。catch
接收Promise
对象的状态变为rejected
时的回调函数。
promise.then(function (value){
// ....
},function (err){
// .... err
})
promise.then(function (value){
// ....
}).catch(function (err){
// ....
})
Promise的方法
Promise.prototype.then()
then
方法是定义在原型对象Promise.prototype
上,前面说过,它接收两个可选参数,第一个参数是fulfilled
状