Node.js ES7 异步函数

匿名 (未验证) 提交于 2019-12-02 23:49:02

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

基础语法:

const fn = async () => {} async function fn () {} 

// async
// 1.在普通函数定义的前面加上asynv 关键字,普通函数就变成了异步函数
// 2.异步函数默认的返回值是promise 对象
// 3.在异步函数内部使用throw关键字进行错误的抛出
// 4.在异步函数内部使用 return 关键词 进行结果的返回,结果会被包裹在promise 对象中, return 关键词 代替了 promise 方法中的 resolve 。

// await 关键字
// 1. 它只能出现在异步函数中
// 2. promise await 后面只能写promise 对象,写其他类型的API是不行的。
// 3. await 关键字是暂停异步函数向下执行,直到promise 返回结果。
示例:
 1 async function f1 () {  2   return 'f1'  3 }  4   5 async function f2 () {  6   return 'f2'  7 }  8   9 async function f3 () { 10   return 'f3' 11 } 12  13 async function run () { 14   let r1 = await f1() 15   let r2 = await f2() 16   let r3 = await f3() 17   console.log(r1) 18   console.log(r2) 19   console.log(r3) 20 } 21  22 run()

示例2:

 1 const fs = require('fs')  2 // 改造异步函数API,让其返回promise对象,从而支持异步函数语法  3 const promisify = require('util').promisify  4 // 调用promisify 方法改造现有异步API,让其返回promise 对象  5 const readFile = promisify(fs.readFile)  6   7 async function run () {  8  let r1 = await readFile('./1.txt', 'utf8')  9  let r2 = await readFile('./2.txt', 'utf8') 10  let r3 = await readFile('./3.txt', 'utf8') 11  console.log(r1) 12  console.log(r2) 13  console.log(r3) 14 } 15  16 run()

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!