promise概述
介绍
promise是ES6的重要特性之一
传统的异步编程的解决方案是使用回调函数,但是这样就会导致嵌套过深,产生回调地狱,那么promise异步编程的另一种解决方案,而且会更加的强大。
三种状态
- pending(待定)初始状态,既没有被兑现,也没有被拒绝
- fulfilled(已兑现)意味着操作成功完成
- rejected(已拒绝)意味着操作失败。
特点
- 待定状态的 Promise 对象要么会通过一个值被兑现(fulfilled),要么会通过一个原因(错误)*被拒绝(rejected)*当这些情况之一发生时,我们用 promise 的 then 方法排列起来的相关处理程序就会被调用
Promise.prototype.then
和Promise.prototype.catch
方法返回的是 promise, 所以它们可以被链式调用
promise的三个实例方法
then()方法
- then是实例状态发生改变时的回调函数,第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数
- then方法返回的是一个新的Promise实例,也就是promise能链式书写的原因
promise.then(result => {
···})
catch方法
当出现异常 则需要catch方法进行捕获
promise.then(result => {
···}).catch(error => {
···})
finally()方法
方法用于指定不管 Promise 对象最后状态如何,都会执行的操作
promise.then(result => {
···}).catch(error => {
···}).finally(() => {
···});
promise的静态方法
resolve方法
方法返回一个以给定值解析后的Promise
对象
定值有以下几种情况:
- 如果这个值是一个 promise ,那么将返回这个 promise
- 参数不是具有then()方法的对象,或根本就不是对象,Promise.resolve()会返回一个新的 Promise 对象,状态为resolve