setInterval是一个全局JavaScript方法。它用于定期执行特定功能或代码段。
如何在 setInterval 函数中使用 SpeechSynthesis?
我需要一种在用户完成按下按钮等操作后持续使用语音合成(例如每 5 秒一个单词)的方法。 但我无法在 Safari 上使用 setInterval 创建此行为
我想使用setinterval函数用js制作幻灯片,但我不知道为什么我的代码不起作用。虽然控制台中没有错误。我有很多图片以 bk 开头,然后是...
考虑以下代码: const [秒,setSeconds] = useState(START_VALUE); 使用效果(()=> { const 间隔 ID = setInterval(() => { setSeconds((前一秒) =>
我试图延迟setInterval函数的执行,该函数设置为2000。 理想情况下,我希望该函数在每次刷新页面 10000 次之后执行 + 每次隐藏之后执行...
如何修复 useEffect 中的计时器在频繁重新渲染时冻结的问题?
在我的 React 应用程序中,我有高度交互的组件,其中用户键盘输入上发生了大量频繁的重新渲染。我还想在这个组件中表示计时器。我有一个
如何修复 useEffect 内的计时器在频繁重新渲染时冻结的问题? [反应,打字稿]
在我的 React 应用程序中,我有高度交互的组件,其中用户键盘输入上发生了大量频繁的重新渲染。我还想在这个组件中表示计时器。我有一个
当应用程序被杀死然后在React Native Expo中重新启动时,setInterval会变得更快
我正在 React Native Expo 中构建一个秒表,它能够在后台运行或在使用异步存储杀死应用程序时运行。当我启动秒表时,我会杀死该应用程序,然后重新...
让 SVGator Javascript API 在计时器循环中工作
我有一个 4 秒的 SVGator 动画,需要完整运行,然后让最后 2 秒无限循环。我已导出为 SVG/Javascript,然后使用以下 JS 代码... 常量元素...
我制作了这个计数器,但我希望它永远运行,这真的很简单,我在这里做错了什么? 函数定时器() { console.log("计时器!") } window.setInterval(timer(), 1000)
有没有函数或方法可以阻止 setinterval 函数在 jQuery 或 JS 中的匹配后继续运行?
我正在开发的项目生成了2个不同的p元素,并且每个元素都是独立触发的。回调后大约需要5秒加载。我无法控制这些 p
我试图在这里解决一个简单的问题,但我不知道该采取什么方向。 getAuthNumber() // 返回带有数字的承诺(例如 98765) // 响应时间可以是5s-20s 我试图在这里解决一个简单的问题,但我不知道该采取什么方向。 getAuthNumber() // returns a promise with a number (eg 98765) // response times can be 5s-20s <div class=“auth”> </div> //code let counter = 0; let el = document.getElementsbyClassName(“auth”)[0]; let func = setInterval(function(){ counter++; getAuthNumber().then((num)=>{ return [num, counter]; }).then(res){ If(counter == res[1]) el.innerHTML = res[0]; }, 10000); 我需要编写一个函数,每 10 秒获取一次身份验证编号并将其显示在下面的块中。我尝试过使用设置间隔,但 getAuthNumber() 可能需要 10 秒以上才能返回,在这种情况下,我需要丢弃该响应并仅显示当前值。 我已将 Jake Archibald 的 this gist(请参阅 JavaScript 对抗困难方法 - HTTP 203)改编为以下代码: function promiseInterval(milliseconds, signal, promiseFactory, callback) { const start = performance.now(); function tick(time) { if (signal.aborted){ return; } promiseFactory().then( value => { callback(value); scheduleTick(time); } ); } function scheduleTick(time) { const elapsed = time - start; const roundedElapsed = Math.round(elapsed / milliseconds) * milliseconds; const targetNext = start + roundedElapsed + milliseconds; const delay = targetNext - performance.now(); setTimeout(tick, delay); } scheduleTick(start); } 从要点开始,我删除了requestAnimationFrame和document.timeline.currentTime的使用(仅使用performance.now),并且添加了promiseFactory参数,加上一些重命名(animationInterval重命名为promiseInterval, ms 重命名为 milliseconds 和 scheduleFrame 重命名为 scheduleTick)并格式化。 你可以像这样使用它: const controller = new AbortController(); // This is used to stop promiseInterval( 10000, // 10s controller.signal, // signal, to stop the process call `controller.abort` getAuthNumber, // the promise factory num => {el.innerHTML = num;} // this is what you do with the values ); 它不会真正每 10 秒调用一次 getAuthNumber。相反,它将等到 getAuthNumber 完成并安排在下一个 10 秒间隔调用,然后重复。所以它不会多次调用它并丢弃值。 不要使用setInterval而是使用setTimeOut函数。 setInterval 的执行取决于 CPU 使用率,如果增加的话 setInterval 将无法在指定的时间间隔内完成 您可以做的是在 async 内运行 setInterval 函数。在下面的代码片段中,getAuth函数在2秒后完成,但setInterval每1秒运行一次。但它仍然有效,因为async内部有一个setInterval功能。 const getAuth = () => { return new Promise((res, rej) => { setTimeout(() => res(Math.random()), 2000); }); }; const setDiv = async () => { const res = await getAuth(); console.log(res); }; setInterval(setDiv, 1000);
setTimeout和setInterval返回的定时器ID是普通的、可伪造的数字,这是否存在安全问题?
好吧,这并不是什么巨大的安全风险,尽管它至少揭示了一些潜在的干扰。 假设我们有那些非常封闭的 JavaScript 模块,它们在不知情的情况下加载到我的页面中......
Javascript 循环等待来自外部源的输入(Android tasker)
我对 JavaScript 还很陌生。 我在 JavaScript 中的等待循环中遇到了困难,无法等待来自外部源(任务执行器)的内容。 特别是我有一个带有 JavaScript 的 HTML 文档(显示...
为什么我的打字机效果中的 setInterval 会跳过第二个字符(索引 1)并正确显示剩余字符?
我正在我的 React 应用程序中实现打字机效果,其中我从 URL 获取字符串并一次显示一个字符。我希望效果从第一个字符(索引 0)和 p 开始......
为什么我的 React 打字机效果中的 setInterval 会跳过第二个字符(索引 1)并正确显示剩余字符?
我正在我的 React 应用程序中实现打字机效果,其中我从 URL 获取字符串并一次显示一个字符。我希望效果从第一个字符(索引 0)和 p 开始......
如何使用 Javascript 暂停和恢复 setInterval() 函数? 例如,也许我有一个秒表可以告诉您您浏览网页的秒数。有一个‘
尝试找出为什么以下代码的输出是这样的 console.log("开始"); 设置间隔(函数(){ console.log("setInterval"); }, 5000); 让日期=新日期(); 同时...
我现在陷入困境。我创建了一个函数来控制使用毫秒到秒、分钟和小时的计算来获取数据的频率,这似乎工作正常。 这是...
间隔函数会导致无限的 UI 负载,除非我在 URL 中输入“/index.html”
我正在尝试在我的 Angular 应用程序中制作一个简单的数字时钟,但目前我只是让它显示一个计数器,同时我弄清楚到底发生了什么: 在clock.component.html中: 我正在尝试在我的 Angular 应用程序中制作一个简单的数字时钟,但目前我只是让它显示一个计数器,同时我弄清楚到底发生了什么: 在clock.component.html中: <div class="time" id="time">{{ secondsPassed }}</div> 在clock.component.ts中: @Component({ selector: 'app-clock', standalone: true, imports: [], templateUrl: './clock.component.html', styleUrl: './clock.component.scss' }) export class ClockComponent implements OnInit, OnDestroy { secondsPassed: number; timer: any; constructor() { this.secondsPassed = 0; } ngOnInit(): void { this.startTimer(); } ngOnDestroy(): void { if (this.timer) { clearInterval(this.timer); } } startTimer() { this.timer = setInterval(() => { this.secondsPassed++; console.log(this.secondsPassed); }, 1000) } } 每当我执行服务并继续 localhost:4200 时,它将永远卡在旋转的加载圈上,除非我手动输入 localhost:4200/index.html,此时它将正确显示计时器并更新。 我尝试了很多不同的东西,包括 rxjs 订阅和异步管道,但没有任何效果。我什至尝试在 Angular 区域之外运行,但计时器不会更新。 我注意到的一件非常奇怪的事情是,每当我保存对代码的更改并在 Angular 本地服务器运行时重建它时,它就会看起来好像有两个计时器在运行,所以我不确定 ngOnDestroy 是否被调用以及第一个还没清除?我对 Angular 还很陌生,所以我不知道这是否与我的问题有关。 感谢您的帮助! 出于某种原因,这个问题的答案有效。我不知道为什么,但至少它解决了我的问题:) 我也遇到了同样的问题,花了很长时间才找到解决方案。 随着 Angular 17 中引入 SSR,页面的渲染发生在服务器上,从而产生包含初始页面状态的初始 HTML 内容。这会导致在计时器或间隔运行时渲染无法完成。 这可以通过 afterNextRender 方法来解决,该方法必须在可注入上下文中调用,最好是在 constructor 中调用。 afterNextRender(() => { setInterval(() => { console.log('Interval triggered'); // Put your code here ngZone.run(() => { // Put your ui changes here }); }, 10000); }, {phase: AfterRenderPhase.Write}); UI 更改必须再次在 Angular 环境中进行。 确保使用正确的RenderPhase。 您问题的完整组成部分: import {afterNextRender, AfterRenderPhase, Component, NgZone, OnDestroy, OnInit} from "@angular/core"; @Component({ selector: 'app-clock', standalone: true, imports: [], templateUrl: './clock.component.html', styleUrl: './clock.component.scss' }) export class ClockComponent implements OnInit, OnDestroy { secondsPassed: number; timer: any; constructor(private ngZone: NgZone) { this.secondsPassed = 0; afterNextRender(() => { this.startTimer(); }, {phase: AfterRenderPhase.Write}); } ngOnInit(): void { //this.startTimer(); } ngOnDestroy(): void { if (this.timer) { clearInterval(this.timer); } } startTimer() { this.timer = setInterval(() => { this.ngZone.run(() => { this.secondsPassed++; }); console.log(this.secondsPassed); }, 1000) } }
我正在尝试创建一个每 30 秒出现在浮动按钮旁边的对话气泡。我已经添加了必要的 HTML、JavaScript 和 CSS 样式,但对话气泡并未像以前那样显示...