node 异步编程

2020年7月20日 作者 张舫

同步API,异步API

  • 同步API只有当前API执行完成后,才能继续执行下一个API
  • 当前API的执行不会阻塞后续代码的执行
  • 同步API可以从返回值中拿到API执行结果但是异步API是不可以的
  • 基本上有回调方法的是异步,没有回调方法的是同步(个人总结仅供参考)
  • 同步API从上到下依次执行,前面的代码会阻塞后面的代码
  • 异步API不会等待API执行完成后,再去执行下面代码

 

promise避免地狱回调

什么是地狱回调直接上代码,这就地狱回调,我要依次读取1~6.txt文件,只有上一个成功才能读取下一个,文件

promise出现的目的是解决Node.js异步编程中,回调地狱的问题,基本使用

promise的链式操作避免地狱回调(重点)

使用async 和 await解决地狱回调比使用promise简单

异步函数是异步编程语法的终极解决方案,他可以让我们异步代码写成同步代码的形式,让代码不再有回调函数嵌套,使代码变的清晰明了

async关键字

  • 普通函数定义前加async关键字,普通函数变成异步函数
  • 异步函数默认返回promise对象
  • 在异步函数内使用return关键字进行结果返回 结果会被包裹在promise对象中 return 关键字代替了resolve方法
  • 在异步函数内使用throw关键字抛出程序异常
  • 调用异步函数在链式调用then方法获取异步函数执行结果
  • 调用异步函数在链式调用catch方法获取异步函数执行的错误信息

await关键字

  • await关键只能出现在异步函数中
  • await promise ; await只写promise对象其他对象是不可以的
  • await 关键字可是暂停异步函数向下执行 知道 promise返回结果

使用util promisify 改造现有异步api,让其返回promise对象

使用这种方式是不是比地狱回调好多了^_^