标签: setinterval

setTimeout 到底执行了多少次?

我知道这可能是一个老问题了。但经过几次谷歌搜索后我真的很困惑。

这个问题中,我了解到 setTimeout 将永远执行,

但从这一次,我了解到它只会执行一次。

奇怪的是,当我在浏览器控制台中测试它时,我碰巧看到它一直在执行。

在此输入图像描述

但有时它只执行一次:

在此输入图像描述

相同的代码给出不同的结果。有人知道为什么吗?

编辑: 我现在可以相信 setTimeout 仅执行一次,但如何解释我的测试的第一个屏幕截图?

javascript settimeout setinterval

1
推荐指数
1
解决办法
2116
查看次数

使用 setInterval 调用加载函数

update()我有一个每隔 5 秒调用一次的函数:

setInterval(function() {
    update();
}, 5000);
Run Code Online (Sandbox Code Playgroud)

然而,我的目标是在加载时立即调用该函数,然后每 5 秒调用一次。如何在 javascript 或 jQuery 中实现这一目标?

javascript jquery function setinterval

1
推荐指数
1
解决办法
3228
查看次数

setInterval 函数也在 Angular 6 中的其他组件中运行

我是 Angular(6) 的新手。setInterval我在组件中使用函数。它正在工作,但是当我导航到另一条路线时,它setInterval会继续执行。请帮我查明原因。

//Calling it in ngOnit()
autosavedraftsolution() {
      setInterval(() => {
        console.log(this.draftSolutionForm);
        if (this.solutionTitleValid) {
          this.savedraftsolution();
        }
      }, this.autoSaveInterval);
    }

//savedraftsolution()
  savedraftsolution() {
    console.log("saving..");

    this.connectService.saveDraftSolution({
      Title: this.draftSolutionForm.get('Title').value,
      Product: this.draftSolutionForm.get('Product').value
    } as Draftsolution).subscribe(draftsol => {
      console.log("saved");

    });
  }
Run Code Online (Sandbox Code Playgroud)

它不断在控制台中向我显示“正在保存..”和“已保存”消息。

javascript setinterval angular angular6

1
推荐指数
1
解决办法
934
查看次数

如何在鼠标悬停时暂停间隔并在鼠标不再悬停时恢复

我创建了一个页面,其中 div 的背景颜色经常变化。我想做到这一点,以便当鼠标悬停(或悬停)时,只要鼠标悬停在那里,颜色变换器就会在其所在的位置暂停。当鼠标不再悬停在 div 上时,颜色会继续从上次停止的位置发生变化。我在这个网站上遇到的最接近的例子使用了 JQuery 解决方案。我不是在寻找 JQuery 解决方案。我正在寻找一个 JavaScript 解决方案。我感谢您的所有回复。谢谢你!

var dammit = document.getElementById("muck");
var colorChange = document.getElementById("color-changer");
var colors = ["red", "blue", "green", "pink"];
var counter = 0;

function changer() {
  if (counter >= colors.length) {
    counter = 0;
  };

  colorChange.style.background = colors[counter];
  counter++;

};

var myTimer = setInterval(changer, 3000);
Run Code Online (Sandbox Code Playgroud)
body {
  background: #FDCA40;
  margin: 0;
  padding: 0;
  -webkit-transition: background 0.9s;
  -moz-transition: background 0.9s;
  transition: background 0.9s;
}

div#muck {
  width: 100%;
  height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)
<body id="color-changer">
  <div …
Run Code Online (Sandbox Code Playgroud)

javascript setinterval

1
推荐指数
1
解决办法
2386
查看次数

如何在vanilla javascript中一个接一个地运行多个计时器函数

假设我想一个接一个地运行多个计时器函数,即首先一个函数运行 5 分钟,然后在第一个倒计时完成后,另一个计时器开始再运行 2 分钟。

我实现了定时器功能如下

function timer(count) {
    console.log(count)
    let counter = setInterval(() => {
        count = count - 1;
        if (count < 0) {
            clearInterval(counter);
            return;
        }
        console.log(count)
    }, 1000);
}

Run Code Online (Sandbox Code Playgroud)

然后当我用不同的参数调用这个函数两次时

timer(15);
timer(5);
Run Code Online (Sandbox Code Playgroud)

我得到的输出为

15
5
14
4
13
3
11
1
10
0
9
8
.
.
0
Run Code Online (Sandbox Code Playgroud)

然而我想要的输出是

15
14
.
.
2
1
0
5
4
3
2
1
0
Run Code Online (Sandbox Code Playgroud)

javascript setinterval

1
推荐指数
1
解决办法
3119
查看次数

useEffect setInterval 和 setState 中的 Bug

我尝试过React的useEffect功能

useEffect(() => {
    setInterval(() => {
        const time =
            Date.parse(untilDeadline.deadline) - Date.parse(new Date());
        setuntilDeadline((prevValue) => {
            return {
                ...prevValue,
                seconds: Math.floor((time / 1000) % 60),
                minutes: Math.floor((time / 1000 / 60) % 60),
                hours: Math.floor((time / (1000 * 60 * 60)) % 24),
                days: Math.floor(time / (1000 * 60 * 60 * 24)),
            };
        });
    }, 1000);
}, []);
Run Code Online (Sandbox Code Playgroud)

没有 [] 就崩溃了,到底为什么?

javascript setinterval setstate reactjs

1
推荐指数
1
解决办法
815
查看次数

无论我尝试什么,我都无法设置工作间隔

我不知道怎么回事。这是我的代码:

   setInterval(testI(),1000);

   function testI(){
        console.log("I ran");
   }
Run Code Online (Sandbox Code Playgroud)

然后它运行该函数一次但不重复。我尝试在 chrome 和 firefox 中运行它并得到相同的结果。我很困扰。

javascript setinterval

1
推荐指数
1
解决办法
35
查看次数

为什么我无法停止反应功能组件中的间隔

在我的代码中,我遇到一些间隔问题。我有这样的情况

import { useState } from 'react';

function App() {
  const [count, setCount] = useState(0);

  function handleClick() {
    const timer = setInterval(() => {
      if (count >= 10) {
        clearInterval(timer);
      } else {
        setCount((prevCount) => prevCount + 1);
      }
    }, 1000);
  }

  return (
    <>
      <button onClick={handleClick}>start</button>
      <p>{count}</p>
    </>
  );
}

export default App;
Run Code Online (Sandbox Code Playgroud)

我想做的是当用户单击按钮时启动一个间隔,并在计数器达到 10 时停止它,但它永远不会停止,调试器说内部setInterval计数始终为 0。有人知道问题是什么吗?我还发现,如果我class像这样将组件重写为组件

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0,
    };
  }

  handleClick() {
    let …
Run Code Online (Sandbox Code Playgroud)

javascript setinterval reactjs react-functional-component

1
推荐指数
1
解决办法
2276
查看次数

如何每“t”分钟刷新 JWT 令牌?

我正在尝试每“t”分钟实现一次自动刷新访问令牌;我在 useEffect (在根组件中)中实现了 setInterval,它发送对新访问令牌的请求。当我运行代码时,有时间隔从 onMount 开始,有时根本不运行。

我遇到的另一个问题是,当我将用户重定向到登录页面时,我尝试清除间隔,即使在clearInterval之后它仍然继续运行。

如果有任何其他方法可以按设定的时间间隔实现 JWT 刷新令牌,我也愿意接受。

 useEffect(() => {
      async function getRefreshToken() {
        const response = await axios.post("http://localhost:3001/refreshToken", {refreshToken}, {withCredentials: true})
        if (response.data.redirect) {
          clearInterval(refresh)
          history.replace(`${response.data.redirect}`)
          localStorage.clear()
        }} 

      const refresh = setInterval(getRefreshToken, 4000)
    }, [])
Run Code Online (Sandbox Code Playgroud)

javascript setinterval reactjs use-effect

1
推荐指数
1
解决办法
4513
查看次数

反应倒计时器无法正常工作

因此,我正在为我的一个项目制作一个倒计时组件,以查看用户可以再次执行某操作之前剩余的时间。我有以秒为单位的时间差,并将秒数发送到我的倒计时组件。这就是我的倒计时组件的样子。

所以现在我什至没有使用时间差来进行测试,我只是做了 5000 秒。

    let [timerClock, setTimerClock] = useState(5000);                            
                                                                                 
    useEffect(() => {
    setInterval(function() {
        console.log("minus: ", timerClock)
        setTimerClock(timerClock - 1);
    }, 1000)
   }, [timerClock]);
Run Code Online (Sandbox Code Playgroud)

因此,在最初的 10 秒内,一切正常,但在最初的几秒钟后,它开始出现故障,无法正常工作。它会在相同的数字内上下波动,并且在两者之间开始变得更快。所以说它从 5000 开始,一旦达到 4990 左右,它将开始在 4990、4991、4993 等之间反弹,然后由于某种原因而下降,并且完全出现故障。难道我做错了什么?在我看来,它应该起作用,只是不了解发生了什么。

这是我的辅导员的图像,你可以看到它没有正确倒计时,这次它搞砸了。

在此输入图像描述

debugging timer setinterval countdown reactjs

1
推荐指数
1
解决办法
6560
查看次数