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 })

 

posted @ 2021-11-30 20:34  .Nice  阅读(100)  评论(0)    收藏  举报