美文网首页
ES7-async函数

ES7-async函数

作者: 清风昙 | 来源:发表于2022-03-07 00:26 被阅读0次

    anync函数是在ES2017标准中引入的,使用async关键字声明的函数,是AsyncFunction构造函数的实例。在async函数内部可以使用await关键字,表示紧跟在后面的表达式需要等待结果。async和await关键字可以更简洁的写出基于Promise的异步行为。

    • 基本用法
      async函数会返回一个Promise对象,如果一个async函数的返回值不是Promise,那么会被隐式地包装到一个Promise中。如:
    asnyc function asyncFunc() {
      return 'hello'
    }
    // 等价于
    function asyncFunc() {
      return Promise.resolve('hello')
    }
    console.log(asyncFunc())  // Promise{'hello'}
    asyncFunc().then(res => {
      console.log(res)  // hello
    })
    

    async函数内部return语句返回的值,会成为then()方法回调函数的参数
    async函数中可以有await表达式,async函数执行时,如果遇到await,会先暂停执行,等到触发的异步操作完成后,再恢复async函数的执行并返回解析值。如:

    function asyncFunc() {
      return new Promise(resolve => {
        console.log('延时任务')
        resolve()
      }, 1000)
    }
    async function helloAsync() {
      await asyncFunc()
      console.log('hello')
    }
    helloAsync()
    // 延时任务
    // hello
    
    • 错误处理
      如果async函数内部抛出错误,会导致返回的Promise对象变为reject状态,抛出的错误对象会被catch()方法回调函数接收到。如:
      async function asyncFunc() {
      await new Promise((resolve, reject) => {
      throw new Error('抛出错误')
      })
      asyncFunc().then(res => {
      console.log(res)
      }).catch( err => {
      console.log(err) // 抛出错误
      })
      }

    相关文章

      网友评论

          本文标题:ES7-async函数

          本文链接:https://www.haomeiwen.com/subject/yktorrtx.html