在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 不使用全局變量怎么寫一個(gè)時(shí)間自增的輪詢方法

不使用全局變量怎么寫一個(gè)時(shí)間自增的輪詢方法

今天去面試遇到的一道題,想了好久沒想出來(lái),被鄙視了。
要求:
1、poll方法接收兩個(gè)函數(shù),checkStatus和callback,其中checkStatus返回值是布爾類型,true或false,callback是回調(diào)函數(shù)。
2、如果checkStatus返回true,執(zhí)行callback,否則繼續(xù)執(zhí)行checkStatus但是需要延時(shí)。
3、輪詢時(shí)間需要不斷增加,第一次執(zhí)行checkStatus返回false之后,需要1000ms再執(zhí)行第二次,以后每一次的時(shí)間都要增加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);

我能想到的就是這個(gè),但是還是用了全局變量,,,求解?。?!

回答
編輯回答
浪婳

按你采納的想法,我覺得

function poll (checkStatus,callback,time) {
        if(checkStatus()){
            callback()
        }else{
            setTimeout(()=>{
                poll(checkStatus,callback,time*1.5)
            },time)
        }
    }
    function checkStatus(){
        return true;
    }
    function callback () {
        console.log()
    }
    poll(checkStatus,callback,1000)

這樣也行吧

2017年8月9日 14:08
編輯回答
夏木

這道題明顯考的是閉包。

2017年10月27日 04:30
編輯回答
別硬撐
function poll (checkStatus, callback) {
  const poll = (checkStatus, callback, time) => {
    if (checkStatus()) {
      callback()
    } else {
      setTimeout(() => {
        console.log(new Date())
        poll(checkStatus, callback, time * 1.5)
      }, time)
    }
  }
  poll(checkStatus, callback, 1000)
}
2017年2月9日 13:40