异步操作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);
                }
            }
异步操作async await的更多相关文章
- C# 异步操作 async await
		
在编程的过程中,我们会遇到很多需要异步操作的场景.比如要下载一个文件,如果使用同步的方式进行下载,那么UI操作就会被卡住,这时最好能够使用异步的方式进行下载.在C#中,很早就开始支持异步的操作了,只不 ...
 - C# 异步操作 async await 的用法
		
1. async与 await 成对出现 async 在方法前使用 ,方法体面面用 await . 2. 使用async 和await定义异步方法不会创建新线程. 3.await 后面一定是一个扫行 ...
 - async/await与promise(nodejs中的异步操作问题)
		
此文只是粗略介绍使用方法,欲了解核心概念请参考官方文档或其他资料. 举例写文章详情页面的时候的一个场景:首先更改文章详情中的 PV,然后读取文章详情,然后根据文章详情中文章 Id 查阅该文章评论和该文 ...
 - 异步操作之 Promise 和 Async await 用法进阶
		
ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...
 - 【学习笔记】JS经典异步操作,从闭包到async/await
		
参考文献:王仕军——知乎专栏前端周刊 感谢作者的热心总结,本文在理解的基础上,根据自己能力水平作了一点小小的修改,在加深自己印象的同时也希望能和各位共同进步... 1. 异步与for循环 抛出一个问题 ...
 - .NET异步操作学习之一:Async/Await中异常的处理
		
以前的异常处理,习惯了过程式的把出现的异常全部捕捉一遍,然后再进行处理.Async/Await关键字出来之后的确简化了异步编程,但也带来了一些问题.接下来自己将对这对关键字进行学习.然后把研究结果放在 ...
 - [.NET] 利用 async & await 的异步编程
		
利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html 目录 异步编程的简介 异 ...
 - [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程
		
怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html ...
 - [.NET] 利用 async & await 进行异步 IO 操作
		
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
 
随机推荐
- HZOI20190803 A,C题
			
题目链接:https://www.cnblogs.com/Juve/articles/11295333.html A: 考场上只有70分... 发现几个性质:特殊性质1:在两条链上,看它是fib第几项 ...
 - 最全的CSS hack没有之一
			
1.何为HACK? 简单的说,HACK就是只有特定浏览器才能识别这段hack代码.Hack也可以说是让前端最为头疼的问题,因为要写N多种兼容代码.当然,IE是最让人蛋疼的. 一般来说,CSS HACK ...
 - HDFS命名空间管理
 - Luogu P1730 最小密度路径(最短路径+dp)
			
P1730 最小密度路径 题面 题目描述 给出一张有 \(N\) 个点 \(M\) 条边的加权有向无环图,接下来有 \(Q\) 个询问,每个询问包括 \(2\) 个节点 \(X\) 和 \(Y\) , ...
 - 系统io统计
			
$ cat /proc/diskstats sda sda1 sda2 gg- gg- gg- 主号 次号 名称 成功读 合并读 扇区读 读时间 每一列的含义分别为: 第一列为 设备号 (nu ...
 - BigDecimal的四则运算及小数位数格式
			
一.加法 BigDecimal b1 = new BigDecimal("20");BigDecimal b2 = new BigDecimal("30");B ...
 - Django项目:CRM(客户关系管理系统)--18--10PerfectCRM实现King_admin日期优化
			
#kingadmin_tags.py # ————————06PerfectCRM实现King_admin注册功能获取内存优化处理———————— # # 因为前端禁止使用下划线开头(_meta.ve ...
 - hdu 1505 && hdu1506 &&hdu 2830 && 2870 总结---------DP之状图选最大矩形
			
/* 多谢了“闭眼,睁眼” 同学给我一套dp专题,不然真是没接触过这种题型. 做个4个简单的,很高兴有所收获. 2013-08-06 /* HDU 1506 最基础的一道题目,其主要精髓就在于两个数组 ...
 - 彻底删除 Git 项目中的文件(BFG Repo-Cleaner 用法)
			
一些时候由于开发初期经验不足和贪图方便, 会把一些不应该提交到 Git 的文件上传到 Github, 带来一系列安全问题, 更有可能是把一些大文件上传到 GitHub 上, 导致项目非常臃肿, 每次 ...
 - Spring松耦合示例(转)& IOC
			
Spring松耦合示例 轻松学习Spring<一> IoC容器和Dependency Injection模式 最近公司需要,项目中要用到Spring和Ibatis.趁着过年好好学习学习.I ...