js 同步异步执行顺序

function lazyMan(name) {

            function Man() {
                setTimeout(function () {
                    console.log(`Hi! This is ${name}!`);
                },0)
            }

            Man.prototype.sleep = function (time) {

                setTimeout(function () {
                    console.log(`Wake up after ${time}!`);
                },time*1000)

                // 把异步的转成同步的等待10秒;
                setTimeout(function () {
                    // 加定时器,为了让此处整体变成异步;
                    let duration = time *1000;// 10秒的毫秒差;
                    let curTime= Date.now();
                    //当过了10秒之后,继续执行下面的代码;while 循环是用来阻塞当前主线程;因为while循环是同步的;当while不结束;那么代码不能向下运行;
                    while(Date.now()-curTime<=duration){};
                    console.log(`Wake up after ${time}!`);
                },0);

                return this;
            }

            Man.prototype.eat = function (food) {

                setTimeout(function () {
                    console.log(`Eat  ${food}~`);
                },0)

            return this;// 实例
        };

        Man.prototype.sleepFirst = function (time) {

            let duration = time*1000;
            let curTime =Date.now();

            // while : 用来阻塞线程;不是只有定时器可以解决时间问题;

            while(Date.now()-curTime<=duration){};

            console.log(`Wake up after ${time}`);

            return this;
        }
        
        return new Man()
    }
    lazyMan("Hank").sleepFirst(5).eat("supper")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值