Randomize setInterval ( How to rewrite same random after random interval)

后端 未结 5 2095
既然无缘
既然无缘 2020-11-29 22:18

I\'d like to know how to achieve: generate a random number after a random number of time. And reuse it.

function doSomething(){
     // ... do something.....         


        
5条回答
  •  既然无缘
    2020-11-29 23:04

    Here's a reusable version that can be cleared. Open-sourced as an NPM package with IntelliSense enabled.

    Utility Function

    const setRandomInterval = (intervalFunction, minDelay, maxDelay) => {
      let timeout;
    
      const runInterval = () => {
        const timeoutFunction = () => {
          intervalFunction();
          runInterval();
        };
    
        const delay = Math.floor(Math.random() * (maxDelay - minDelay + 1)) + minDelay;
    
        timeout = setTimeout(timeoutFunction, delay);
      };
    
      runInterval();
    
      return {
        clear() { clearTimeout(timeout) },
      };
    };
    

    Usage

    const interval = setRandomInterval(() => console.log('Hello World!'), 1000, 5000);
    
    // // Clear when needed.
    // interval.clear();
    

提交回复
热议问题