我正在寻找一个网页,通过嵌入式Web服务器的AJAX调用来对数据进行采样.我如何设置代码,以便一个请求不与另一个请求重叠?我应该提到我有很少的JavaScript经验,也有一个令人信服的理由不使用大于10千字节的任何大小的外部库.
我为每个连接用户设置了很多服务器端超时,其中setTimeout和setInterval可以持续10-30秒.如果Node.js实例在其中一个超时中间重新启动,则显然它们在重新启动时都被清除,这可能会导致这些用户出现一些问题.我将如何坚持这些超时,或者是否有任何模块可以帮助解决这个问题?
请考虑以下示例:
<script type="text/javascript">
function alertBox(){
alert('Hello World!');
}
function doSomething(){
setInterval(alertBox(), 5000); //This is for generic purposes only
};
function myFunction(){
setTimeout(doSomething(),3000);
};
myFunction();
</script>
Run Code Online (Sandbox Code Playgroud)
是什么导致它立即执行,而不是等待3秒设置,以及仅执行警报ONCE,而不是按预定的5秒间隔执行?
感谢您的任何帮助,您可以提供!
石匠
我需要遍历每个div .row来添加或删除具有CSS3 3D变换效果的翻转类.
当我使用jquery each()将这个添加/删除类应用于每个".row"时,所有div都会在同一时间添加或删除类".flip".我需要这个延迟,所以它看起来像多米诺骨牌效应.
知道如何让这个工作吗?或者如何逐个添加/删除翻转类?
这是我发现但它不起作用:
$('.row').each(function(i){
if($(this).hasClass('flip')){
$(this).delay(i*500).removeClass('flip');
}else{
$(this).delay(i*500).addClass('flip');
}
});
Run Code Online (Sandbox Code Playgroud) 可能重复:
setInterval - 如何只触发一次?
我想只运行一次以下代码,所以在2秒之后它将改变iframe的src,但不会尝试一次又一次地执行.
<script type="text/javascript">
setInterval(function () {document.getElementById('iframe').src = "http://www.y.com";}, 2000);
</script>
Run Code Online (Sandbox Code Playgroud) 我一直在使用setTimeout和setInterval,我无法让代码按照我希望的方式执行.我的目标是创建一个setInterval,每隔三秒调用一次,并在十秒后清除它.但是,当我在firebug中运行代码时,我唯一得到的是一个数字,我假设它是setInterval的id,因为每次执行代码时,数字都会增加.
var intID = setInterval(function() {
console.log("I've been called");},3000);
setTimeout(clearInterval(intID), 10000);
Run Code Online (Sandbox Code Playgroud) 当我用jshint检查我的*.js时,它在这部分显示错误:
function updateStatistic(interval) {
return setInterval(function () {
exports.getStatistics();
}, interval);
}
Run Code Online (Sandbox Code Playgroud)
消息是:'setInterval'未定义.但为什么?
我XMLHttpRequest
每秒都在服务器上,服务器将响应新消息.要调用XMLHttpRequest
每一秒我使用a中的setInterval()
函数SharedWorker
.
但是,由于我每秒都在提出请求,我想知道是否setInterval()
异步?
例如,如果一个XMLHttpRequest
请求花了3秒钟来完成"由于延迟",我是否会同时setInterval()
发出3个请求,或者等到第一个请求完成之后再等待1秒并发送另一个请求?
这是我的代码
function checkQueue(url)
{
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", reqListener);
xhr.open('GET', url, true);
xhr.send();
}
function reqListener ()
{
var queue = JSON.parse(this.responseText);
notifyAllPorts(queue);
console.log(this.responseText);
}
setInterval(
function() {
checkQueue('/add-ons/icws/push.php')
}
, 1000);
Run Code Online (Sandbox Code Playgroud) 我有一个网站,我需要运行一个倒数计时器来向人们展示他们完成一个动作需要多少时间.
这个计时器将运行几天,可能只是使用MomentJS来说出MomentJS to()
功能中的"4天内" .
然而,当我们还剩一个小时的时候,我将按分钟计时器切换到倒计时,最终当分钟变得足够低时,我将涉及一个秒计时器.当我们到最后几分钟时,我甚至会显示几毫秒.
几乎有两种主要技术可以为倒数计时器设置动画.
setInterval()
requestAnimationFrame()
好吧,我立刻注意到这个requestAnimationFrame()
方法对眼睛更加平滑,效果很好 - 尤其是当我显示毫秒时.然而,当我注意到我可怜的电脑开始变得温暖时,不久.所有这些"动画"都会给我的CPU造成很大负担.我尝试使用CPU监视器,并查看了看看我的CPU有多少负载的方法,但总的来说,我找不到一个工具,可以让我清楚地了解我的小倒计时器是什么样的CPU负载.使用.
所以,我决定找到一种限制 FPS的方法,看看是否会减少我的问题.是的,确实如此.如果您同时使用setTimeout()
,则requestAnimationFrame()
可以在调用下一个功能之前设置等待时间.
这提出了一个问题,如果你正在使用setTimeout()
- 你为什么不使用setInterval()
并忘记requestAnimationFrame()
给你的额外优化?
我做了一些环顾四周,找到了另一种方法,只需检查自上次requestAnimationFrame()
调用函数以来是否已经过了正确的间隔时间.我对这段代码的工作方式做了一些优化,最后得到了我试图在下面测量的两个函数之一.
最后,我真的希望有一个更清晰的方法来衡量这一点 - 因为我的mac上的活动监视器不是提供准确读数的可靠工具 - 而且我找不到一种方法来测量代码我跑了.
Chrome有一些工具,分析器和时间线 - 这些都非常有用,但它们没有给我我正在寻找的指标 - CPU负载.
这里有四个代码片段,它们完全相同 - 所有这些代码片段都使用:
代码是100%相同,唯一的区别是我如何限制动画的FPS.
我想找到一种方法来测量(尽可能精确地)测量四个函数之间的差异,即它们所承受的CPU负载量.然后我想改变FPS,看看我是否可以为我的应用程序找到可接受的负载,然后我可以在不同的计时器阶段找到最佳点 - 适量的FPS.
技术1 - setTimeout()
var now = moment(); // new Date().getTime();
var then = moment().add(60, 'seconds'); // new Date(now + 60 * 1000);
$(".now").text(moment(now).format('h:mm:ss a'));
$(".then").text(moment(then).format('h:mm:ss …
Run Code Online (Sandbox Code Playgroud)javascript performance settimeout setinterval requestanimationframe
我想在第一次触发时运行一个延迟的间隔。我该如何使用 useEffect 来做到这一点?由于语法,我发现很难实现我想做的事情
区间函数
useEffect(()=>{
const timer = setInterval(() => {
//do something here
return ()=> clearInterval(timer)
}, 1000);
},[/*dependency*/])
Run Code Online (Sandbox Code Playgroud)
延迟功能
useEffect(() => {
setTimeout(() => {
//I want to run the interval here, but it will only run once
//because of no dependencies. If i populate the dependencies,
//setTimeout will run more than once.
}, Math.random() * 1000);
}, []);
Run Code Online (Sandbox Code Playgroud)
当然,它是可以以某种方式实现的......
setinterval ×10
javascript ×8
settimeout ×6
jquery ×2
ajax ×1
asynchronous ×1
callback ×1
delay ×1
each ×1
html ×1
iframe ×1
jshint ×1
loops ×1
node.js ×1
performance ×1
react-hooks ×1
reactjs ×1
use-effect ×1