同步异步
同步异步
-
同步API:只有当前API执行完成后,才能继续执行下一个API
-
异步API:当前API的执行不会阻塞后续代码的执行
① 异步API需要通过回调函数获取结果 ② fs.readFile读取文件和事件处理函数都是要回调函数获取结果
1)promise
Promise出现的目的是解决Node.js异步编程中回调地狱的问题。
1、使用 new 构造promise的实例对象
2、promise函数有 resolve 和 reject 两个参数
3、实际上promise是在异步API外包裹着它们,并返回执行成功或失败的结果到外边
4、使用promise的 then 方法获取成功结果到外部
5、使用promise的 catch 方法获取失败结果到外部,允许链式使用
2)promise解决回调地狱问题
1、先看有几个异步API,有几个异步API就有几个promise实例对象
2、创建promise实例对象并放入对应异步API
3、把各promise放入新建的函数中,并将promise实例对象设置为 return 值
4、调用第一个函数,使用 then 方法输出并设置它的 return 值为下一个要执行的函数
5、使用链式 then 方法,即可按照此顺序执行多个异步API
3)es7新增异步函数
异步函数是异步编程语法的终极解决方案,它可以让我们将异步代码写成同步的形式,让代码不再有回调函数嵌套,使代码变得清晰明了。
异步函数即:在普通函数前面加上 ' async ' 关键字
*await关键字
① 它只能出现在异步函数中
① await promise 可以暂停异步函数的执行 等待promise对象返回结果后再向下执 行
① 它还可以通过返回值方式拿到返回结果
① 它后面只能跟promise对象
*promisify方法
① promisify 方法在 util 模块中
① 它可以 对异步函数进行包装,使它返回一个promise对象,以支持promise语法
③ 异步函数中,使用 run 方法读取