Async Await

227 阅读1分钟

1.Async

Async让方法成为异步的方法 (成为一个Promise)

async function main () {
  return 'example'
}
console.log(main())

该代码结果为:

Promise {'example'}

由此可知,async前缀代码已经由一个普通方法转换为一个Promise异步方法。

1.1如何获取async方法中的数据

因为Async方法返回的是一个Promise,所以一般使用Promise的方式调用数据结果。

async function main () {
  return 'example'
}
// 返回Promise
main().then(data => {
  console.log(data) 
})

该结果为:

example

2.Await

Await在 异步方法中 阻塞该方法,直至await的异步方法执行完毕,并返回await方法的返回值

async function main () {
  return 'example'
}

async function sub () {
  let msg = await main()
  console.log(msg)
}

sub()

返回结果为:

example

两个方法联用例子

async function main () {
  return new Promise ((resolve, reject) => {
    if (Math.random() <= 0.5) {
      resolve('成功')
    } else {
      reject(new Error('失败'))
    }
  })
}

async function sub () {
  let subFunc = await main()
  console.log(subFunc)
}

sub()

返回结果为:

成功 / (node:20100) UnhandledPromiseRejectionWarning: Error: 失败

更多内容请参考:Asnyc 阮一峰教程