zoukankan      html  css  js  c++  java
  • 异步操作async await

    async函数的特点

    • 语义化强
    • 里面的await只能在async函数中使用
    • await后面的语句可以是promise对象、数字、字符串等
    • async函数返回的是一个Promsie对象
    • await语句后的Promise对象变成reject状态时,那么整个async函数会中断,后面的程序不会继续执行



    例:

    router.get('/testAsync',async (ctx)=>{
      global.console.log('start',new Date().getTime());
      const a = await new Promise((resolve,reject)=>{
        setTimeout(()=>{
          global.console.log('async a',new Date().getTime());
          resolve('a')
        },1000)
      });
      const b = await 123
      const c = await new Promise((resolve,reject)=>{
        setTimeout(()=>{
          global.console.log('async a',new Date().getTime());
          resolve('c')
        },2000)
      })
      ctx.body = {
        a,b,c
      };
    
    })

    看看代码的执行过程,它里面遇到了await, await 表示等待,代码就暂停到这里,不再向下执行了,它等待后面的promise对象执行完毕,然后拿到promise resolve 的值并进行返回,返回值拿到之后,它继续向下执行。具体到 我们的代码, 遇到await 之后,代码就暂停执行了, 等待后面promise执行完毕,暂停结束,代码继续执行。

    怎么处理异常,如果请求发生异常,怎么处理?   

      它用的是try/catch 来捕获异常,把await 放到 try 中进行执行,如有异常,就使用catch 进行处理。

    async getFaceResult () {
                    try {
                        let location = await this.getLocation(this.phoneNum);
                        if (location.data.success) {
                            let province = location.data.obj.province;
                            let city = location.data.obj.city;
                            let result = await this.getFaceList(province, city);
                            if (result.data.success) {
                                this.faceList = result.data.obj;
                            }
                        }
                    } catch(err) {
                        console.log(err);
                    }
                }
  • 相关阅读:
    reactnative遇到的问题总结
    swiper使用总结-坑点汇总
    echars配置案例-reactnative
    REST架构
    web万维网 -- 基础概念
    (四)值栈与OGNL
    (三)Struts2 拦截器
    (二)Struts2 核心知识
    (一)问候Struts2
    在eclipse中使用Maven3(笔记二)
  • 原文地址:https://www.cnblogs.com/LChenglong/p/11941905.html
Copyright © 2011-2022 走看看