博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6系列之Promise, Generator, Async比较
阅读量:6171 次
发布时间:2019-06-21

本文共 1614 字,大约阅读时间需要 5 分钟。

比较Promise, Generator, Async写法:

function takeLongTime(n) {    return new Promise(resolve => {        setTimeout(() => resolve(n + 200), n);    });}function step1(n) {    console.log(`step1 with ${n}`);    return takeLongTime(n);}function step2(n) {    console.log(`step2 with ${n}`);    return takeLongTime(n);}function step3(n) {    console.log(`step3 with ${n}`);    return takeLongTime(n);}

Promise

function doIt() {    console.time("doIt");    const time1 = 300;    step1(time1)        .then(time2 => step2(time2))        .then(time3 => step3(time3))        .then(result => {            console.log(`result is ${result}`);        });    console.timeEnd("doIt");}doIt();// step1 with 300// doIt: 13202.5498046875ms// step2 with 500// step3 with 700// result is 900

Generator

function* doii() {    console.time("do");    const time1 = 300;    const time2 = yield step1(time1);    const time3 = yield step2(time2);    const result = yield step3(time3);    console.log(`result is ${result}`);    console.timeEnd("do");}doii();let res = doii();res.next().value    .then( a => res.next(a).value )    .then( b => res.next(b).value )    .then( c => res.next(c).value )// step1 with 300// step2 with 500// step3 with 700// result is 900// do: 1506.312744140625ms

Async

async function doIt() {    console.time("doIt");    const time1 = 300;    const time2 = await step1(time1);    const time3 = await step2(time2);    const result = await step3(time3);    console.log(`result is ${result}`);    console.timeEnd("doIt");}doIt();// step1 with 300// step2 with 500// step3 with 700// result is 900// doIt: 1507.68505859375ms

转载地址:http://eqtba.baihongyu.com/

你可能感兴趣的文章
struts2中类型转换器的使用
查看>>
11G Oracle RAC添加新表空间时数据文件误放置到本地文件系统的修正
查看>>
从91移动应用发展趋势报告看国内应用现状
查看>>
【ORACLE技术嘉年华PPT】MySQL压力测试经验
查看>>
Linux下汇编调试器GDB的使用
查看>>
css溢出机制探究
查看>>
vue中如何实现后台管理系统的权限控制
查看>>
关于angularjs过滤器的理解
查看>>
vue 使用html2canvas将DOM转化为图片
查看>>
angular编辑-初始化变量失败
查看>>
jQuery源码解析之Data
查看>>
React Native Cannot read property 'bindings' of null (null)) 解决!
查看>>
同样的神经网络引擎,苹果A11芯片比华为麒麟970牛在哪?
查看>>
ucar-weex
查看>>
vuex 理解与应用
查看>>
ES6(3)-各种类型的扩展(数组、对象)
查看>>
mysql 分组
查看>>
Android JNI入门第三篇——jni头文件分析
查看>>
ubuntu server 10.4下NFS服务的配置
查看>>
nginx+php-FastCGI+mysql性能测试
查看>>