Promise对象的两个特点
- 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:
pending(进行中)
、fulfilled(已成功)
和rejected(已失败)
- 一旦状态改变,就不会再变。状态的改变有两种可能:
从pending到fulfilled和从pending变为rejected。
优点
有了Promise
对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise
对象提供统一的接口,使得控制异步操作更加容易。
基本用法
下面是一个Promise实例
const promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
Promise构造函数接受一个函数作为参数,该函数的两个参数分别为resolve和reject。resolve函数的作用是将Promise对象的状态由pending转化为fulfilled。reject函数的作用是将Promise对象的状态由pending转化为rejected。
Promise实例生成之后,可以使用then方法分别指定resolved状态和rejected状态的回调函数,其中rejected状态的回调函数是可选的。
promise.then(function(value) {
// success
}