Promise 是一个构造函数,通过 new
关键字实例化对象
Promise 语法
1 2 3
| const p = new Promise((resolve, reject)=>{})
console.dir(p)
|
- Promise 接受一个函数作为参数
- 在参数函数中接受两个参数
Promise 实例
promise 实例有两个属性
- Promise 的状态
- pending
- fulfilled
- rejected
- Promise 状态的改变
通过调用 resolve()
和 reject()
改变当前 promise 对象的状态
1 2 3 4 5 6
| const p = new Promise((resolve, reject)=>{ resolve() })
console.dir(p)
|
1 2 3 4 5 6
| const p = new Promise((resolve, reject)=>{ reject() })
console.dir(p)
|
promise 的状态改变时一次性的
1 2 3 4 5 6
| const p = new Promise((resolve, reject)=>{ resolve() reject() })
console.dir(p)
|
- Promise 的结果
1 2 3 4 5
| const p = new Promise((resolve, reject)=>{ resolve('Success') })
console.dir(p)
|
Promise 的使用
1) then 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| const p = new Promise((resolve, reject)=>{ resolve('Success') })
p.then(()=>{ console.log("成功时调用") },()=>{ console.log("失败时调用") }) console.dir(p)
|
1 2 3 4 5 6 7 8 9 10 11
| const p = new Promise((resolve, reject)=>{ resolve('Success') }) p.then((res)=>{ console.log(res) console.log("成功时调用") },(err)=>{ console.log(err) console.log("失败时调用") }) console.dir(p)
|
1 2 3 4 5 6 7 8 9 10 11
| const p = new Promise((resolve, reject)=>{ resolve('Success') }) const r = p.then((res)=>{ console.log(res) console.log("成功时调用") },(err)=>{ console.log(err) console.log("失败时调用") }) console.dir(r)
|
then 返回结果为一个新的 promise 对象, 状态为 pending
1 2 3 4 5 6 7
| const t = new Promise((resolve, reject) => {}).then((res)=> { conlose.log('Success') },(err)=>{ conlose.log('Fail') })
console.dir(t)
|
如果 promise 的状态不改变, then 函数里的方法不执行
- catch
1 2 3 4 5 6 7 8 9
| const p = new Promise((resolve, reject) => { reject() })
p.catch(()=>{ console.log('Failure') })
console.dir(p)
|
1 2 3 4 5 6 7 8 9
| const p = new Promise((resolve, reject) => { console.log(a) })
p.catch((erro)=>{ console.log('Failure = ' + erro) })
console.dir(p)
|
参考:
2020最好理解的Promise教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili