美文网首页
实现一个轮询函数

实现一个轮询函数

作者: 被代码耽误的裁缝 | 来源:发表于2022-06-05 00:19 被阅读0次

    要求

    函数接收两个函数为参数,一个返回boolean值的功能函数,第二个是功能函数返回true时需要执行的回调函数。
    初始等待 1 秒后执行,不成功则增加 50%的等待时间,再执行功能函数。

    function simplePoller(queryFn = () => { }, callback = () => { }) {
      // 初始间隔时间(ms)
      let baseTime = 1000;
      // 等待时间的增长倍率
      let timeRate = 1.5;
    
      let timeHandler = (time) => {
        setTimeout(() => {
          let res = queryFn();
          if (res === true) {
            callback();
          } else if (res === false) {
            // 等待时间按倍率增加,向上取整,去除时间小数
            time = Math.ceil(time * timeRate);
            timeHandler(time);
          } else {
            console.error('queryFn 函数必须返回一个boolean值');
          }
        }, time)
      }
      timeHandler(baseTime);
    }
    

    相关文章

      网友评论

          本文标题:实现一个轮询函数

          本文链接:https://www.haomeiwen.com/subject/mpziurtx.html