Promise async和await修饰符解决回调地狱

215 阅读2分钟
  • 回调地狱: 异步回调函数中又嵌套异步回调函数

promise 对象: 解决异步函数嵌套问题,本身是一个构造函数 需要new创建

promise 构造函数的形参是一个函数,这个函数中一定要放入异步函数

promise 两个形参 ,then() 处理成功结果, catch() 处理失败结果

  • Promise的三种状态

  • 利用then-fs 模块解决回调地狱 先下载模块 npm i then-fs

  • Promise对象的同步异步
  1. 同步先执行 异步后执行
  2. new Promise的参数中的代码是同步执行
  3. then及catch中的代码是异步执行的
  4. async修饰的函数,不是异步函数
  5. await能停止代码执行,让后面的同步代码,先执行

  • async 和 await 修饰符

async 返回 Promise
await 返回 Promise 对象中的then() 中的res


  • async 修饰的函数,总是返回一个 Promise 对象
  • 函数的返回值,将自动包装在 resolve 的 promise 中

  • await只能出现在async修饰的函数中!
  • await后面跟随的是一个promise对象
  • await能停止代码执行,让后面的同步代码,先执行;
  • await返回的是: Promise对象中的then()中的回调函数中的参数res;

async和await解决回调地狱


try..catch..可以捕获错误


同步异步 执行机制

  • js代码开始执行后,主线程执行栈中会把任务分为两类
  • 一类是同步任务,一类是异步任务;主线程执行栈优先执行同步任务
  • 异步任务会被放入特定的处理程序中,满足条件后,被放到消息(任务/事件)队列中
  • 主线程执行栈中所有的同步任务执行完毕之后,通过事件循环去消息(任务/事件)队列中
  • 挑选优先满足条件的程序,放入主线程执行栈中执行。事件循环,周而复始,一直执行
  • 同步优于微任务,微任务优于宏任务