theme: mk-cute
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
promise 基础知识
promise 理解
- promise 是javascript中异步编程的新的解决方案
- promise 是一个构造函数
- promise 对象用来封装一个异步操作并获取结果
promise 状态
- pending 等待状态
- resolved 成功状态
rejected 失败状态
promise 状态转换
mermaid graph TD pending --> resolved pending --> rejected
- 状态转换只有这两种
- 一个promise对象只能改变一次状态
- 成功后结果数据为value 失败后结果为reason
promise 基本流程
- new Promise() 新建一个promise
- 成功执行resolved()
- 失败执行rejected()
- resolved和rejected回调都可以使用.then
- catch只能用于rejected回调时
- promise返回的是一个promise对象
promise的基本使用
``js // 1. 新建一个promise // 2. promise 接收一个回调函数 这个函数被称为执行器函数 里面执行异步任务 // 3. 回调函数接收两个参数 resolved rejected 两个参数都为函数类型 // 4. 异步操作执行成功了 执行resolved(value) 失败了执行rejected(reason) const p = new Promise((resolved, rejected)=>{ setTimeout(()=>{ // 模拟异步任务 如果当前时间为偶数就成功 否则就失败 const time = Date.now() time % 2 == 0 ? resolved(
执行成功 ${time}) : rejected(
执行失败 ${time}`) },1000) })
p.then(
// 接收成功的value数据 onResoled
value => {
console.log(`onResoled ${value}`)
},
// 接收失败的reason数据 onRejected
reason => {
console.log(`onRejected ${reason}`)
}
)
```
为什么使用promise
- 指定回调函数的方式更加灵活
- 纯回调函数必须在启动异步任务前指定
- promise 可以在启动异步任务后指定
- 支持链式调用,解决回调地狱问题
- 回调函数嵌套调用
总结
- 今日小知识get 欢迎关注专栏 promise持续更新