• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript的async, await, promise,多参数的调用比较(第2篇)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

参考博客:https://blog.csdn.net/u012863664/article/details/77881921

 

TypeScript的async, await, promise,多参数的调用比较

现在把业务要求改一下,仍然是三个步骤,但每一个步骤都需要之前每个步骤的结果。

 

async function takeLongTime(n:number){
    return new Promise(resolve=>{
        setTimeout(() => {
            resolve(n+300);
        }, n);
    });
}

function step1(n:number){
    console.log(`step1 with ${n}`);
    return takeLongTime(n);
}

function step2(m:number , n:number){
    console.log(`step2 with ${m} and ${n}`);
    return takeLongTime(m + n);
}

function step3(k:number, m:number, n:number){
    console.log(`step3 with ${k}, ${m} and ${n}`);
    return takeLongTime(k + m + n);
}

////async / wait
async function doIt1()
{
    console.time("doIt1");
    const time1 = 300;
    const time2 = await step1(time1);
    const time3 = await step2(time1, <number>time2);
    const result = await step3(time1, <number>time2,  <number>time3);
    console.log(`result is ${result }`);
    console.timeEnd("doIt1");
}

//doIt1();
// step1 with 300
// step2 with 300 and 600
// step3 with 300, 600 and 1200
// result is 2400



////promise 方式实现
function doIt2()
{
    console.time("doIt2");
    const time1 = 300;
    step1(time1)
    .then(time2=>{
        return step2(time1, <number>time2)
        .then(time3=>[time1, time2, time3]);
    })
    .then(times=>{
        const [time1, time2, time3] = times;
        return step3(<number>time1, <number>time2, <number>time3);
    })
    .then(result =>{
        console.log(`result is ${result}`);
        console.timeEnd("doIt2");
    })
}

doIt2();
// step1 with 300
// step2 with 300 and 600
// step3 with 300, 600 and 1200
// result is 2400
// doIt2: 3310.490966796875ms
// doIt2: 3310.550ms

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【前端】TypeScript初识发布时间:2022-07-18
下一篇:
taro3.x: typeScript配置alias发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap