zoukankan      html  css  js  c++  java
  • async 函数

    async

    ES2017 标准引入了 async 函数,使得异步操作变得更加方便。

    async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。

    基本用法;

    使用 Async-await 来简化获取 Promise 的结果 ;

      <script>
        async function main() {
          // 遇到await便会等待响应结果;
          const 成员 = await Promise对象
          // 请求出错或响应回来后继续往后执行
        }
      </script>
    

    任何函数都可以使用async

    <script>
        //  具名函数
        async function main () {}
        // 匿名函数
        async function () {}
        // 箭头函数
        async () => {}
        // 对象成员函数简写
        async hello () {}
      </script>
    

    返回promise

    <script>
          async function main() {
            // async 函数始终返回 Promise
            // async 函数的返回值
            // 如果是普通数据,则直接把它包装到 promise 对象中
            // 数据就是 resolve 的结果
            return 123
    
            // 如果你返回的直接就是一个 promise 对象,则不作任何处理
            // return new Promise((resolve) => {
            // setTimeout(() => {
            // resolve(123)
            // }, 2000)
            // })
          }
          // 通过 then 方法来获取 async 函数的返回值
          // .then(data => {
          // console.log(data)
          // })
          main2()
        </script>
    

    错误处理;

     <script>
          async function main() {
            // 还是使用 .catch 来处理异常
            // const data = await request('dsanlksas')
            // .catch(err => {
            // console.log('请求失败了')
            // })
            // console.log(data)
            console.log(1)
         
            // 更推荐使用 try-catch 来捕获异常
            try {
              // try 捕获不到它的异常
              // request('dsabjdsdsa').then(data => {
              // console.log(data)
              // })
              // JSON.parse('dnsakdnsa')
              console.log(2)
                
              const data = await request(
                'http://jsonplaceholder.typicode.com/posts'
              )
              console.log(3)
              const data2 = await request('dnsandlksa')
              console.log(4)
            } catch (err) {
              console.log('请求失败了', err)
            }
            
            console.log(5)
          }
    
          main()
        </script>
    
  • 相关阅读:
    kafka-python基本使用
    RabbitMq 消息队列详解
    Socket 编程
    python 进程, 线程 ,协程,锁,协程应用到爬虫的讲解
    python中with的用法
    为什么 Elasticsearch 需要堆内存来存储数据
    面向数据的架构
    跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)
    跟我一起学.NetCore之熟悉的接口权限验证不能少(Jwt)
    跟我一起学.NetCore之WebApi接口裸奔有风险(Jwt)
  • 原文地址:https://www.cnblogs.com/ywnh/p/12354036.html
Copyright © 2011-2022 走看看