promise:英文承诺意思,promise对象中保存某个未来才回结束的事件(通常是一个异步操作)的结果。
promise有三个状态:(推荐学习:javascript视频教程)
pendding,rejected,resolved
promise对象状态的切换只有两种可能:
pendding->rejected,pendding->resolved
基础用法:
new promise((resolved,rejected)=>{})
promise对象resolved,rejected函数,在异步事件状态pendding->resolved回调成功时,会调用resolved函数;当异步操作失败时,回调用rejected函数。
promise的then(resolved,rejected)函数参数有两个,一个resolved函数,一个rejected函数。
promise的catch():捕捉promise错误函数,和then函数参数中rejected作用一样,处理错误,由于promise抛出错误具有冒泡性质,能够不断传递,会传到catch中,所以建议所有错误处理放在catch中,then中只处理成功的。
promise一个大特色就是可以链式调用,在then,catch中可以返回promise对象。
promise.all([promise1,promise2]):参数是promise对象数组,等到所有promise对象状态resolved,该对象的状态会resolved,会立即调用then,当有一个promise对象为rejected,该对象的状态就会边城rejectd,执行catch。
promise.race([promise1,promise2]):竞速函数,当有一个promise对象状态变化了,该对象就会采用和相同的状态,并执行相应函数。
promise的生命周期
每个 promise都会经历一个短暂的生命周期,初始为挂起态( pending state),这表示异步操作尚未结束。一个挂起的 promise 也被认为是未决的( unsettled )。一旦异步操作结束, promise就会被认为是已决的( settled ),并进入两种可能状态之一:
1. 已完成(fulfilled ): promise 的异步操作已成功结束;
2. 已拒绝(rejected ): promise 的异步操作未成功结束,可能是一个错误,或由其他原因导致。
一旦状态改变,就「凝固」了,会一直保持这个状态,不会再发生变化。当状态发生变化,promise.then绑定的函数就会被调用。注意:promise一旦新建就会「立即执行」,无法取消。这也是它的缺点之一。
更多javascript相关技术文章,请访问js教程栏目进行学习!
以上就是promise是什么意思的详细内容。
