Javascript 闭包

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. 不可以使用全局变量。

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)();

 

上一篇 >:react + electron 构建应用 下一篇 >:JS的this、作用域、闭包、对象

发表评论