nodejs-typescipt-Promise代码实例讲解,看完就理解async和await了

这里就不讲解Promise和Async和Await什么东西了,直接上代码,和对应的结果。希望你能自己跑一边就知道他们之间的区别和什么时候用了。


标准代码和结果:

interface IBase{
    do(i:number):Promise<any>;
}
class BaseClass implements IBase{
    async do(i:number):Promise<any>{
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve();
            },i);
        });
    }
}

class Aclass extends BaseClass{
    async run(i:number,s:string):Promise<void>{
        let j = 0;
        while(j<10){
            console.log(s);
            await this.do(i);
            j++;
        }
    }
}

async function main(){

    let a = new Aclass();
    let b = new Aclass();
    
    a.run(2000,'aaaaa');
    b.run(3500,'bbbbb');
    
}

main();
对应的输出(a每两秒输出一次,b每3.5秒输出一次,他们之间相互不影响各自的时间间隔,犹豫多线程一样。):

aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
aaaaa
bbbbb
aaaaa
aaaaa
bbbbb
bbbbb
bbbbb



如果把BaseClass中的return删除,则输入出入(并且输出是瞬间完成,没有等待时间

aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb
aaaaa
bbbbb


恢复到最开始的代码,如果在main方法内  在a.run(xxxx)和b.run(xxxx)前面都加一个await,则返回结果如下(a每次2秒,a6次循环完毕后,b才开始出现,并且3.5秒一次

aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
bbbbb
bbbbb
bbbbb
bbbbb
bbbbb
bbbbb



好啦,具体为什么是酱紫就有待各位自己去使用了。

跟着代码敲一遍,可能就会有更深入的理解了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值