Javascript 闭包

2022-06-14 21:42:44 浏览数 (3)

1. 创建一个函数poll,它接受两个参数checkStatus[函数],callback[函数]。 2. poll会调用checkStatus,checkStatus返回true或者false。 3. 如果checkStatus返回true,调用callback并结束 4. 如果checkStatus返回false,1.5秒后继续调用checkStatus,如果还是返回false,1.5×2秒后继续调用checkStatus,还是false的话,1.5×3秒后继续调用,以此类推。 5. 不可以使用全局变量。

代码语言:javascript复制
function poll(checkStatus, callback){
  let time = 0;
  let timer = null;
  

  function dd(){
      console.log(date())
      let status = checkStatus();
    
  if(status){
    clearTimeout(timer);
    return callback();
  }
  time  ;
  timer = setTimeout(()=>{
    dd(checkStatus, callback);
  }, time * 1500);
    
  }
  
  return dd;
  
}

function a(){return Math.random()>0.5}

function b(){console.log('over')}

function date(){
  let d = new Date();
  return `${d.getMinutes()}:${d.getSeconds()}`
}

poll(a,b)();

0 人点赞