美文网首页
async 和 await

async 和 await

作者: percykuang | 来源:发表于2020-04-30 13:57 被阅读0次

async 和 await

async和await是ES2016新增的两个关键字,它们借鉴了ES2015中生成器在实际开发中的应用,目的是简化Promise API的使用,并非是替代Promise

async

async用于修饰函数,放置在函数最开始的位置,被修饰函数的返回结果一定是Promise对象

演示:

async function test() {
  console.log(1)
  return 2
}

等效于下面

function test() {
  return new Promise((resolve, reject) => {
    console.log(1)
    resolve(2)
  })
}

await

await关键字必须出现在async函数中

await用于某个表达式之前,如果表达式返回的是一个Promise对象,则得到的是thenable中的状态数据

示例:

async function test1() {
  console.log(1)
  return 2
}

async function test2() {
  const result = await test1()
  console.log(result) // 2

  // 上面两行代码相当于下面这么多行代码
  // return new Promise((resolve, reject) => {
  //   test1().then(data => {
  //     const result = data
  //     console.log(result)
  //     resolve()
  //   })
  // })
}

test2()

await后面如果不是一个Promise对象呢?

答案:使用Promise.resolve()直接包装

async function test() {
  const result = await 1
  console.log(result)
}
test()

等效于下面

function test() {
  return new Promise((resolve, reject) => {
    Promise.resolve(1).then(data => {
      const result = data
      console.log(result)
      resolve()
    })
  })
}

async和await如何处理错误情况呢?

答案:使用try catch

async function getPromise() {
  if (Math.random() < 0.5) {
    return 1
  } else {
    throw 2
  }
}

async function test() {
  try {
    const result = await getPromise()
    console.log('正常状态', result)
  } catch(error) {
    console.log('错误状态', error)
  }
}

相关文章

  • async和await

    浅谈Async/Await用 async/await 来处理异步 async和await async:声明一个异步...

  • ES8(一) —— async&await

    目录 async和普通函数的区别 await async/await处理多回调异步 async和await必须配合...

  • ES6中的好东西

    1 Await/Async 前端的回调时代我没有赶上,我赶上的是await/async时代。await和async...

  • 使用 async 和 await,实现 fetch 同步请求

    使用 async 和 await,实现 fetch 同步请求 关于 async 和 await 的介绍https:...

  • ES2017 async 函数

    async 和 await 在干什么 每个名称都有意义async : 异步await: async wait简...

  • async-await

    一、async-await和Promise的关系 async-await是promise和generator的语法...

  • 小程序-云开发

    async和await async:异步(无等待)await:等待(是为了同步) 一、await 关键字只在 as...

  • async / await

    async / await 优缺点 async 和 await 相比直接使用 Promise 来说,优势在于处理 ...

  • flutter中compute和isolate

    async和await:对于普通的任务,使用async和await可实现异步处理任务,而async的处理方式并非使...

  • Promise 执行顺序

    使用 async 和 await

网友评论

      本文标题:async 和 await

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