ES6 Promise对象
Promise 对象通过 new Promise(executor) 实例化创建,可以让程序进入一个异步的执行中,完成耗时的操作处理。
语法:new Promise((resole, reject) => {})
Promise 类接收带有两个匿名函数作为参数的匿名函数,其中 resolve 表示成功处理函数,reject 表示失败处理函数
-
Promise 创建:使用 new 来调用 Promise 的构造器来进行实例化。
let promise = new Promise(function(resolve, reject) { // 异步处理 // 处理结束后、调用resolve 或 reject });
- Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。
let promise=new Promise((resolve,reject)=>{ //一顿异步通信操作后,返回成功或失败 //然后判断成功或失败去执行 resolve 或 reject if (true) { // console.log('异步成功!'); resolve('异步成功!'); }else{ // console.log('异步失败!'); resolve('异步失败!'); } });
-
对于已经实例化过的 promise 对象可以调用 promise.then() 方法,传递 resolve 和 reject 方法作为回调。
promise.then() 是 promise 最为常用的方法。
-
Promise .then方法:链式操作
-
Promise .catch方法:捕捉错误
1 promise.then((values)=>{ 2 console.log(values); 3 },(reason)=>{ 4 console.log(reason); 5 });
promise简化了对error的处理,上面的代码我们也可以这样写:
1 promise.then((values)=>{ 2 console.log(values) 3 }).catch((reason)=>{ 4 console.log((reason)); 5 });
Promise.all方法,Promise.race方法
- Promise.all 方法用于将多个 Promise 实例,包装成一个新的 Promise 实例
1 //将三个 Promise 实例的回调组合成数组输出 2 let p=Promise.all([p1,p2,p3]); 3 p.then(value=>{ 4 console.log(value); 5 })
- Promise.race 方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
1 //race()方法,只输出第一个改变状态 2 let p=Promise.race([p1,p2,p3]); 3 p.then(value=>{ 4 console.log(value); 5 })
Promise.resolve 方法,Promise.reject 方法
如果Promise.resolve方法的参数是一个Promise对象的实例,则会被原封不动地返回。
Promise.reject(reason)方法也会返回一个新的Promise实例,该实例的状态为rejected。
Promise.reject方法的参数reason,会被传递给实例的回调函数。
1 //直接返回成功或失败的 Promise 实例 2 let ps = Promise.resolve('成功'); 3 let pj = Promise.reject('失败'); 4 ps.then(value => { 5 console.log(value); return pj; 6 }).catch(reason => { 7 console.log(reason); 8 })

浙公网安备 33010602011771号