2025年ES6之Promise对象

ES6之Promise对象什么是 Promise Promise 是异步编程的一种解决方案 它有三种状态 分别是 pending 进行中 resolved 已完成 rejected 已失败 当 Promise 的状态又 pending 转变为 resolved 或 rejected 时 会执行相应的方法 并且状态一旦改变 就无法再次改变状态

大家好,我是讯享网,很高兴认识大家。

讯享网

什么是Promise

Promise是异步编程的一种解决方案,它有三种状态,分别是pending-进行中resolved-已完成rejected-已失败

当Promise的状态又pending转变为resolved或rejected时,会执行相应的方法,并且状态一旦改变,就无法再次改变状态,这也是它名字promise-承诺的由来

ES6之前的Promise

在ES6中,Promise终于成为了原生对象,可以直接使用。但是在这之前,小伙伴们想要使用Promise,一般会借助于第三方库,或者当你知道其中的原理以后,也可以手动实现一个简易的Promise

当然,为了防止不可预知的bug,在生产项目中最好还是不要使用原生的或者自己编写的Promise(目前为止并不是所有浏览器都能很好的兼容ES6),而是使用已经较为成熟的有大量小伙伴使用的第三方Promise库,下面就为小伙伴推荐一个—— Bluebird


讯享网

Promise的基本用法

声明一个Promise对象

讯享网// 方法1 let promise = new Promise ( (resolve, reject) => { if ( success ) { resolve(a) // pending ——> resolved 参数将传递给对应的回调方法 } else { reject(err) // pending ——> rejectd } } ) // 方法2 function promise () { return new Promise ( function (resolve, reject) { if ( success ) { resolve(a) } else { reject(err) } } ) } 

注意:实例化的Promise对象会立即执行

Promise.prototype.then() VS Promise.prototype.catch()

.then()方法使Promise原型链上的方法,它包含两个参数方法,分别是已成功resolved的回调和已失败rejected的回调

promise.then( () => { console.log('this is success callback') }, () => { console.log('this is fail callback') } ) 

.catch()的作用是捕获Promise的错误,与then()的rejected回调作用几乎一致。但是由于Promise的抛错具有冒泡性质,能够不断传递,这样就能够在下一个catch()中统一处理这些错误。同时catch()也能够捕获then()中抛出的错误,所以建议不要使用then()的rejected回调,而是统一使用catch()来处理错误

讯享网promise.then( () => { console.log('this is success callback') } ).catch( (err) => { console.log(err) } ) 

同样,catch()中也可以抛出错误,由于抛出的错误会在下一个catch中被捕获处理,因此可以再添加catch()

小讯
上一篇 2025-02-22 23:56
下一篇 2025-03-08 11:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/116126.html