zoukankan      html  css  js  c++  java
  • Node.js ES7 异步函数

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

    基础语法:

    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()
  • 相关阅读:
    butterknife异常提示:attribute value must be constant
    SharedPreferences第一次使用后HashMap将常驻内存
    js获取元素的innerText属性为什么为空
    针对focus和blur的Dom事件触发顺序
    android中View的GONE和INVISIBLE的原理
    HTML中div以及span等元素获取焦点
    android MotionEvent获得当前位置
    IE10 透明背景的div无法遮罩
    jquery中.attr('value')和.val()的区别
    __proto__和protaotype的区分
  • 原文地址:https://www.cnblogs.com/liea/p/11221022.html
Copyright © 2011-2022 走看看