• 小米2018春招实习笔试题总结


    Question1:
    有一个url数组

    var urls = ['/a', '/b', '/c',...]

    要求依次请求这几个url, 要求是 第一个请求完了才发第二个请求,第二个完了才发第三个请求
    如此依次。

    function reqst(index){
          var ajaxObj = new XMLHttpRequest();
          ajaxObj.open('get',urls[index]);
          ajaxObj.send();
          ajaxObj.onreadystatechange = function () {
            if (ajaxObj.readyState==4&&ajaxObj.status==200) {
              console.log(urls[index]+'请求成功');
              if(index<len-1){
                reqst(index++);
              }else{
                console.log('url数组中的url全部请求完成');
              }
            }
          }  
    }
    var urls = ['/a', '/b', '/c']
    var len = urls.length;
    reqst(0);    

    Question2:
    定义这样一个函数
    function repeat(func, times, wait) {
    }
    参数分别是需要 repeat的函数, repeat的次数,每次repeat的间隔
    使用方式如下
    调用这个函数能返回一个新函数。

    比如传入的是alert, 执行10次,间隔5秒
    var repeatedFun = repeat(alert, 10, 5000);
    调用返回的这个新函数,如:

    repeatedFun("hellworld");

    会alert十次 helloworld

    有三种解决思路:

    (1)sleep(n)

    function repeat(func, times, wait) {
      return function(str){
        for(var i=0;i<times;i++){
          func(str);
          sleep(wait);
        }
      }
    }
    function sleep(n){
     var start=new Date().getTime();
     console.log(start);
     while(true){
      var time=new Date().getTime();
      if(time-start>n){
        break;
      }
     }
    }
    var repeatedFun = repeat(alert, 3, 5000);
    repeatedFun("hellworld");

     (2) setInterval

    function repeat(func, times, wait) {
    
      return function f(str){
        var t;
        var flag = 0;
        var interval = setInterval(function(){
          flag++;
          if(flag === times){
             clearInterval(interval);
          }
          func(str);
        }, wait);
      }
    
    }
    
    var repeatedFun = repeat(alert, 10, 5000);
    repeatedFun("hellworld");

    (3)setTimeout,利用回调实现

    function repeat(func, times, wait) {
    
      return function f(str){
        var flag = 0;
        func(str);
        var interval = setTimeout(function(){
          flag++;
          if(flag === times){
             clearInterval(interval);
          }
          f(str);
        }, wait);
      }
    
    }
    
    var repeatedFun = repeat(alert, 10, 5000);
    repeatedFun("hellworld");
  • 相关阅读:
    MQTT Client软件-MQTTBox
    Eclipse
    Ant + ivy的安装
    常用消息中间件比较
    各种MQTT server功能比較
    消息中间件的对比
    RabbitMQ Performance Testing Tool 性能测试工具
    Eureka 简介
    win10 localhost 解析为::1 的解决办法
    JSP中过滤器的设置
  • 原文地址:https://www.cnblogs.com/zhenguoli/p/8919855.html
Copyright © 2020-2023  润新知