先久闻async、await,今日终于天时、地利、人和来一睹芳容。

先来看一列

代码片段:

async function test() {const response = await new Promise(resolve => {setTimeout(() => {resolve("test");}, 1000);});console.log(response);
}
test();

输出结果:

test

疑问:response居然拿到了promise的resolve返回值"test"?

对比例子一:

代码片段:

function test() {const response = new Promise(resolve => {setTimeout(() => {resolve("test");}, 1000);});console.log(response);
}
test();

输出结果:

Promise {<pending>}

结果分析:new Promise返回Promise对象赋值于response,既然如此为何文章开始列子使用async、await便可拿到promise对象的resolve返回值?那当然是因为…我也不知道,以后知道了再补充。

对比例子二:

代码片段:

async function test() {console.time('asyncStart')const response = await new Promise(resolve => {setTimeout(() => {resolve("test");}, 1000);});console.timeEnd('asyncStart')console.log(response);
}
test();

输出结果:

asyncStart: 1000.716064453125ms
test

结果分析:await new Promise…代码片段执行时长将近一秒,极像const response = “test”。亦由此可知async、await为何像同步写法。

传闻koa使用async、await解决了express回调地狱,既然如此咱们便比较比较。

代码片段:

//回调
function start(a,cb){new Promise(resolve=>{setTimeout(()=>{resolve(a)},1000)}).then((result)=>{new Promise(resolve=>{setTimeout(()=>{resolve(result)},1000)}).then((res)=>{cb(res);})})
}
start(1,function(res){console.log(res)})// async、await
async function test(b,cb){var result = await new Promise(resolve=>{setTimeout(()=>{resolve(b)},1000)})var res = await new Promise(resolve=>{setTimeout(()=>{resolve(result)},1000)})cb(res)
}
test(2,function(res){console.log(res)})

输出结果:

1
2

结果分析:不用多说,自己感受,这仅仅是两层而已。
再来感受一段有意思的
代码片段:

async function test(str) {return await new Promise(resolve => {setTimeout(() => {resolve(str)}, 1000);})
}async function a(){console.time('a')console.log(await test('a--str1'));console.log(await test('a--str2'));console.timeEnd('a')
}
a();async function b(){console.time('b')var b1 = test('b--str1');var b2 = test('b--str2')console.log(await b1);console.log(await b2);console.timeEnd('b')
}
b();

输出结果:

a--str1
b--str1
b--str2
b: 1004.19384765625ms
a--str2
a: 2004.85498046875ms

结果分析:await只等待所对应async的异步

ES7之async、await相关推荐

  1. 让IE9及以上兼容es6,Promise, 及es7的async await

    在完成下面A和B两步后,页面内嵌JS或者引入自己外部JS,script标签的type属性需要设置为text/babel <!DOCTYPE html> <html><he ...

  2. 解决小程序不能使用ES7语法async/await。并演示此语法

    小汪又来了, 今天小汪来写一篇关于小程序使用 ES7语法中的 async和await,如果能帮到小伙伴,小伙伴不要忘了点点大拇指哦! 了解一下:es7的 async 号称是解决回调地狱的最终方案 使用 ...

  3. 事件循环机制 + ES7:Async/Await(基于generator原理实现)附详细示例分析

    文章目录 一.事件循环 任务队列 宏任务和微任务 循环机制 简单示例 二.Async/Await 1. async 2. await 3. 原理 4. 示例(红字分析为关键) 一.事件循环 任务队列 ...

  4. async function_掌握 Async/Await

    摘要: 还不用Async/Await就OUT了.. 原文:掌握 Async/Await 作者:Jartto Fundebug经授权转载,版权归原作者所有. 前端工程师肯定都经历过 JS 回调链狱的痛苦 ...

  5. ⼩程序中⽀持es7的async语法

    ⼩程序中⽀持es7的async语法 es7的 async 号称是解决回调的最终⽅案 1. 在⼩程序的开发⼯具中,勾选 es6转es5语法 2. 下载 facebook的regenerator库中的 r ...

  6. Node.js Async Await in ES7

    原文 http://stackabuse.com/node-js-async-await-in-es7/ One of the most exciting features coming to Jav ...

  7. 【面试Vue全家桶】vue前端交互模式-es7的​语法结构?async/await​

    作者 |  Jeskson 掘金 |  https://juejin.im/user/5a16e1f3f265da43128096cb 2020.1.12 前端发请求,调用后端接口,来获取特定格式的数 ...

  8. ES7之async,await

    ES7之async,await 一.基本用法 async,await函数是ES7中引入的语法.与Generator,Promise有很大的关系. async 使用async修饰的函数,会返回一个Pro ...

  9. 写一个符合 Promises/A+ 规范并可配合 ES7 async/await 使用的 Promise

    原文地址 从历史的进程来看,Javascript 异步操作的基本单位已经从 callback 转换到 Promise.除了在特殊场景使用 stream,RxJs 等更加抽象和高级的异步数据获取和操作流 ...

  10. 8张图让你一步步看清 async/await 和 promise 的执行顺序

    2019独角兽企业重金招聘Python工程师标准>>> **摘要:**面试必问 原文:8张图帮你一步步看清 async/await 和 promise 的执行顺序 作者:ziwei3 ...

最新文章

  1. 性能优化指南:性能优化的一般性原则与方法
  2. mysql 添加时间戳列
  3. 上海广电电气集团选用Ultimus 提升企业管理
  4. VTK:可视化算法之Stocks
  5. pycharm在ubuntu xfce下面Alt+insert快捷键冲突解决
  6. bzoj3732-Network【Kruskal重构树模板】
  7. v-if 的区别v-show
  8. 视频号直播带货成交的三大关键
  9. 如何将nideshop部署到本地
  10. 软件项目管理第二章笔记---软件项目整体管理
  11. C++ 强连通分量 - 缩点(Tarjan算法)
  12. 教师综合素质5--地理名胜
  13. 蓝牙Ibeacon室内定位和微信摇一摇周边原理分析
  14. android 获取蓝牙设备id_获取设备唯一ID的几种方式
  15. 有限元与深度学习结合求解泊松方程-Petrov
  16. collection.get:fail -502005 database collection not exists. [ResourceNotFound] Db or Table not exist
  17. Javaweb入职第二天
  18. 计算机系给未来的自己写信,给未来的自己写信
  19. 我在软通大学的实训总结报告
  20. 小王子(LCA的运用)

热门文章

  1. SpringBoot 自定义全局异常处理器
  2. 32位/64位操作系统的最大支持内存的空间
  3. 电商详情页缓存架构(一)电商网站的商品详情页架构
  4. 人工智能软件的分析与验证(1) - AI软件的可靠性与落地方法
  5. 江苏华西村海洋工程服务有限公司-船讯网
  6. 《2020 数字中国指数报告》重磅发布,汤道生宣布将投入 100 亿用于开发中小企业专属 SaaS 产品及方案...
  7. 将电脑网络通过USB共享给Android 设备
  8. day1-python基础1
  9. 线性关系和非线性关系异或与非线性关系
  10. 方格网提取高程点lisp_LSP 程序说明