Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在react native javascript中使用暂停恢复功能设置超时_Javascript_Reactjs_Settimeout - Fatal编程技术网

在react native javascript中使用暂停恢复功能设置超时

在react native javascript中使用暂停恢复功能设置超时,javascript,reactjs,settimeout,Javascript,Reactjs,Settimeout,我想设置一个计数器,它可以暂停,也可以在javascript中单击按钮恢复。但我尝试过的任何东西都可以暂停,但它不会从我暂停的地方恢复,而是在我执行恢复操作时从一开始就开始 下面是我迄今为止尝试过的代码 const [isPlay, setisPlay] = useState(true); const timerRef = useRef(null); useEffect(() => { start(); }, []); var counter; fu

我想设置一个计数器,它可以暂停,也可以在javascript中单击按钮恢复。但我尝试过的任何东西都可以暂停,但它不会从我暂停的地方恢复,而是在我执行恢复操作时从一开始就开始

下面是我迄今为止尝试过的代码

const [isPlay, setisPlay] = useState(true);
  const timerRef = useRef(null);



  useEffect(() => {

    start();
  }, []);

  var counter;

  function start() {
    console.log('start');
    if (!counter) {
      reset();
    } else {
      loop();
    }
  }

  function pause() {
    if (timerRef.current) {
      clearInterval(timerRef.current);
      timerRef.current = null;
    }
  }

  function reset() {
    console.log('reset');
    pause();
    counter = 10;
    loop();
  }

  function loop() {
    timerRef.current = setInterval(function () {
      if (0 >= counter) {
        pause();
        return;
      }
      console.warn('counter', counter);
      counter--;
    }, 1000);
  }

  const stopProgress = () => {
    if (isPlay) {
      pause();
      setisPlay(false);
    } else {
      start();
      setisPlay(true);
    }
  };

谁能给我一个解决方案来解决这个问题。非常感谢您的回答。

Hey@Thomas。您可以看到关于如何正确使用间隔来暂停和恢复的示例。这是你想要达到的目标吗@secan是的,我试过了,但是没有动态更新计数器。你能告诉我有什么方法可以把计数器打印出来而不是放在控制台上吗。