当前位置:网站首页>es6-promise对象详解

es6-promise对象详解

2022-08-10 12:07:00 forwardMyLife

1.promise简介

promise是es6中新出的一个对象,主要用来获取异步操作成功或者失败的结果。promise是js异步编程中的核心对象,es8中await和async也是基于promise实现的

promise对象有3种状态,

状态描述
pending等待中,还未执行完
resolved执行成功
rejected执行失败

状态变更:只有2种
pending => resolved
pending => rejected

2.promise的优点

避免回调地狱,promise对象执行完后,可以在then方法,或catch方法中,获取结果,then方法中也会返回一个promise对象(即便本身返回的是普通对象最终也被包装成promise对象)

3.promise对象的创建

let promise = new Promise((resovle,reject)=>{
    
    console.info("create promise object");
    setTimeout(() => {
    
        resovle("ok");
    });
}).then(value=>{
    
    console.info("successed to promise,returned value:"+value);
},reason=>{
    
    console.info("failed to execute promise,reason"+reason);
}).catch(reason=>{
    
    console.error(`failed to reason:${
      reason}`);
});;

promise.then(value=>{
    
    console.info("then:"+value);
});
console.info("end js ......");

promise对象的入参单个箭头函数,箭头函数2个入参为2个函数,resolve,reject,用于成功或失败的状态变更。
resolve的结果为then方法的第一个箭头函数的value参数,
如果then设置了第二个参数,则promise在被reject或抛出异常的情况下会执行reason的箭头函数。

then也会返回一个新的promise对象。
then方法中会等到同步代码块执行完,才会执行。而promise实例化的代码是同步执行的。
整个执行是异步的。

如上述代码执行结果如下:
在这里插入图片描述

4.promise常用静态方法

1.promise的对象方法(p1,p2,p3为promise的实例对象)
Promise.all()并发处理多个异步任务,所有任务都执行完成才能得到结果

Promise.all( [p1,p2,p3] ) .then ( (result) => {
    console.info (result);
})

2.Promise.race()并发处理多个异步任务,只要有一个任务完成就会返回结果
Promise.all()并发处理多个异步任务,所有任务都执行完成才能得到结果

Promise.race ( [p1,p2,p3] ).then ( (result)=>{
    
console.log (result)
})
原网站

版权声明
本文为[forwardMyLife]所创,转载请带上原文链接,感谢
https://blog.csdn.net/lucky_ly/article/details/126236986