描述:
Promise
对象用于表示一个异步操作的最终完成(或失败)及其结果值。
- 一个
Promise
对象代表一个在这个 promise 被创建出来时不一定已知值的代理。它让你能够把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来。这样使得异步方法可以像同步方法那样返回值:异步方法并不会立即返回最终的值,而是会返回一个 promise,以便在未来某个时候把值交给使用者
Promise 状态
共三个状态
pending 待定:初始状态,既没有被兑现,也没有被拒绝。
fulfilled 已兑现:意味着操作成功完成。
rejected 已拒绝:意味着操作失败。
fulfilled 已兑现:意味着操作成功完成。
rejected 已拒绝:意味着操作失败。
示例代码
- pending状态
const promise = new Promise((resolve, reject) => {
console.log('此函数会立即执行!')
})
console.log('promise',promise)
- fulfilled 状态
const promise = new Promise((resolve, reject) => {
console.log('此函数会立即执行!')
resolve('执行成功!')
})
promise.then(res => {
console.log(res);
})
console.log('promise', promise)
- rejected 状态
const promise = new Promise((resolve, reject) => {
console.log('此函数会立即执行!')
reject('Error!')
})
promise.then(res => {
console.log(res);
}).catch(msg => {
console.log(msg);
})
console.log('promise', promise)
注意事项
– 实例化 Promise 对象是需要传入一个函数,这个函数称为
参数1:resolve 可以兑现 promise 的 fulfilled 状态,也称为决议。
参数2:reject 可以拒绝 promise 的 rejected 状态。
特别注意:一旦状态确认下来,promise 的状态会锁死,并且不可修改。
executor
函数,并且函数需要传入两个参数。参数1:resolve 可以兑现 promise 的 fulfilled 状态,也称为决议。
参数2:reject 可以拒绝 promise 的 rejected 状态。
特别注意:一旦状态确认下来,promise 的状态会锁死,并且不可修改。
一个比较完整的demo
// 创建一个 promise 对象, 传入一个 executor 函数,并且传入两个参数
const promise = new Promise((resolve, reject) => {
// 状态1:pending
console.log('此函数会立即执行!')
// 状态2:fulfilled
resolve('Success!')
// 状态3:rejected
// reject('Error!') // 二选一
})
promise.then(res => {
// resolve 的回调
console.log(res); // Success!
}).catch(msg => {
// reject 的回调
console.log(msg); // Error!
})
then 方法的第二种写法
const p = new Promise((resolve, reject) => {
// resolve('成功!')
reject('失败')
})
p.then(res => {
// 成功的回调
console.log(res);
}, err => {
// 失败的回调
console.log(err)
})