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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    不使用全局变量怎么写一个时间自增的轮询方法
    68
    0

    今天去面试遇到的一道题,想了好久没想出来,被鄙视了。
    要求:
    1、poll方法接收两个函数,checkStatus和callback,其中checkStatus返回值是布尔类型,true或false,callback是回调函数。
    2、如果checkStatus返回true,执行callback,否则继续执行checkStatus但是需要延时。
    3、轮询时间需要不断增加,第一次执行checkStatus返回false之后,需要1000ms再执行第二次,以后每一次的时间都要增加1.5倍。
    4、不得使用全局变量

    function time1(){
        var t = 1000;
        function time2(){
            t *= 1.5;
               return t;
        }
        return time2;
    }
    var time3 = time1();
    function poll(checkStatus,callback){
        if(checkStatus()){
            callback();
        }else{
            setTimeout(function(){
                console.log(new Date());
                poll(checkStatus,callback);
            },time3());
        }
    }
    function checkStatus(){
        return 0;
    }
    function callback(){
        console.log('callback');
    }
    poll(checkStatus,callback);

    我能想到的就是这个,但是还是用了全局变量,,,求解!!!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 花语十 普通会员 1楼

      在Python中,你可以使用内置的datetime模块来实现一个时间自增的轮询方法。以下是一个简单的例子:

      ```python import datetime

      def get_next_hour(time): # 创建一个当前时间对象 now = datetime.datetime.now()

      # 计算当前时间与给定时间之间的差值
      diff = now - time
      
      # 如果差值为正,则返回当前时间
      if diff > 0:
          return now + diff / 60
      else:
          return now - diff / 60
      

      def get_next_minute(time): # 创建一个当前时间对象 now = datetime.datetime.now()

      # 计算当前时间与给定时间之间的差值
      diff = now - time
      
      # 如果差值为正,则返回当前时间
      if diff > 0:
          return now + diff / 60 * 10
      else:
          return now - diff / 60 * 10
      

      ```

      在这个例子中,get_next_hour函数返回当前时间加上给定时间之间的分钟数,而get_next_minute函数返回当前时间加上给定时间之间的秒数。这两个函数都使用了datetime.datetime.now()来获取当前时间。

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