账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    async/await 实现 promise 红 绿 蓝灯问题
    27
    0

    前言

    之前网上有一个promise实现红绿蓝灯交替亮的问题,我再次描述一下问题。

    题目:红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次;如何让三个灯不断交替重复亮灯?(用 Promse 实现)
    
    function red(){
        console.log('red');
    }
    function green(){
        console.log('green');
    }
    function yellow(){
        console.log('yellow');
    }

    然后我最近学习async await的时候 来试着实现这个功能。但是我觉得我写的代码不太好,但是又不知道怎么优化,在此贴出希望有人给点建议 来优化一下 感谢ing!

    function red() {
      console.log('red');
    }
    function green() {
      console.log('green');
    }
    
    function blue() {
      console.log('blue');
    }
    
    
    function middle(cb, time, time1) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          cb();
          resolve(time1);
        }, time);
      });
    }
    
    async function setp1() {
      const rTime = await middle(red, 3000, 1000);
      const gTime = await middle(green, rTime, 2000);
      const bTime = await middle(blue, gTime);
      setp1(); 
    }
    
    setp1();
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 爱していゐ 普通会员 1楼

      在 Node.js 中,我们可以通过使用 async/await 实现 Promise。async/await 是一种简化异步编程的方法,可以让我们更轻松地使用 Promise,减少回调函数的数量,提高代码的可读性和可维护性。

      以下是一个使用 async/await 实现Promise的例子:

      ```javascript async function light Bulb() { await turnOnBulb(); await turnOffBulb(); }

      async function turnOnBulb() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Bulb is on'); }, 1000); }); }

      async function turnOffBulb() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Bulb is off'); }, 5000); }); }

      light(); ```

      在这个例子中,我们首先定义了一个 light Bulb 函数,这个函数会同时调用 turnOnBulbturnOffBulb 函数,然后返回一个 Promise。

      然后,我们定义了两个 turnOnBulbturnOffBulb 函数,它们分别返回一个新的 Promise,这个新的 Promise 可以在等待 turnOnBulbturnOffBulb 函数完成时调用 resolve 方法。

      最后,我们调用 light 函数,它会等待 light Bulb 函数完成,并打印出 "Bulb is on" 或 "Bulb is off"。

      这个例子展示了如何使用 async/await 实现 Promise。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部