初识Promise (一)promise基础

414 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

promise 基础知识

promise 理解
  • promise 是javascript中异步编程的新的解决方案
  • promise 是一个构造函数
  • promise 对象用来封装一个异步操作并获取结果
promise 状态
  • pending 等待状态
  • resolved 成功状态
  • rejected 失败状态
promise 状态转换
graph TD
pending --> resolved
pending --> rejected
  • 状态转换只有这两种
  • 一个promise对象只能改变一次状态
  • 成功后结果数据为value 失败后结果为reason
promise 基本流程

image.png

  • new Promise() 新建一个promise
  • 成功执行resolved()
  • 失败执行rejected()
  • resolved和rejected回调都可以使用.then
  • catch只能用于rejected回调时
  • promise返回的是一个promise对象
promise的基本使用
        // 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持续更新