js中setinterval怎么用?怎么才能让setinterval停下来?

从无名到有名,老子一句话照见 SAP BTP 开发的架构次第 摘要: 在SAP BTP项目中,过早命名服务和系统边界是常见陷阱。老子「无名,天地之始;有名,万物之母」的哲学启示开发者:应先观察业务流、数据流等本质问题,而非急于用技术名词(如CAP、Kyma)切割需求。SAP的Clean Core理念强调保持核心系统清澈,通过Side-by-Side扩展在BTP上生长功能。命名阶段需将业务语义凝结为领域模型(如BusinessPartnerRisk),形成稳定契约。开发难点在于克制——不盲目使用平台能力(如Event Mesh),而是根据场景谨慎定义事件、权限等,避免技 阅读详情
AI摘要

setInterval用于定时调用函数,常用于创建动画效果,而clearInterval则用于停止定时调用。文章详细解释了setInterval的两种语法格式,如何传递参数,以及如何通过clearInterval来停止定时器。此外,还提供了JavaScript和ExtJS中同步加载多个Store的示例,解决异步加载同步问题。

setinterval()是定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setinterval()的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。

由 setInterval()返回的ID值可用作clearInterval() 方法的参数。 

setInterval动作的语法格式如下:

setInterval(function,interval[,arg1,arg2,......argn])
setInterval(object,methodName,interval[,arg1,arg2,.....argn])

后面就两个参数code是你的js代码,millisec为时间间隔,以毫秒计。

第一种格式是标准动作面板中setInterval函数的默认语法,第二种格式是在专家模式动作中使用的方法。

其中的参数function是一个函数名或者一个对匿名函数的引用。

object参数指定从Object对象派生的对象。

methodName制定 object参数中要调用的方法。

interval制定对function或methodName调用两次之间的时间,单位是毫秒。

后面的arg1等是可选的参数,用于制定传递给function或是methodName的参数。

setInterval它设置的时间间隔小于动画帧速(如每秒10帧,相当于100毫秒),则按照尽可能接近interval的时间间隔调用函数。而且必须使用updateAfterEvent动作来确保以足够的频率刷新屏幕。如果interval大于动画帧速,则只用在每次播放头进入某一帧是才调用,以减小每次刷新屏幕的影响。

下面的例子每隔1秒调用一次匿名函数。


setInterval(function(){trace("每隔1秒钟我就会显示一次")},1000);//这里的function(){}是没有函数名的函数。成为匿名函数,后面的1000是时间间隔,单位是毫秒。

function show1(){
    trace("每隔1秒显示一次");
}
function show2(str){
    trace(str);
}
setInterval(show1,1000);
setInterval(show2,2000,"每隔2秒我就会显示一次");

上面已经将函数的setInterval方法介绍了。下面我们将介绍对象的setInterval方法。

首先,写一个setInterval在动作中调用对象的方法的例子,该例子不需要传递参数。

myobj=new Object();//创建一个新的对象
myobj.interval=function){
    trace("每隔1秒显示一次");
}//创建对象的方法。
setInterval(myobj,"interval",1000);//设定时间间隔调用对象的方法。

接下来介绍如何传递参数。其实道理和函数的传递参数是一样的。

myobj=new Object();
myobj.interval-function(str){
    trace(str);
}
setInterval(myobj,"interval",2000," 每隔2秒我就会显示一次");

注意。要调用为对象定义的方法时,必须在专家模式中使用第二种语法格式。这样子的话呢,我们来作一个动态显示时间的画面。可以用下面的代码实现。

setInterval(show,1000);
function show(){
    time=new Date();
    hour=time.getHours();
       minu=time.getMinutes();
       sec=time.get.Seconds();
    datetime=hour+":"+minu+":"+sec;
}//这里的datetime是一个动态文本框的变量名字。

用clearinterval命令让setinterval停下来

时间间隔可以用 setInterval 命令来创建并用 clearInterval 命令来终止。setInterval 所用的参数有两种格式。在第一种格式中,你传递给 setInterval 的参数可以是一个函数名,一段时间上的间隔以及一些传递给前面函数的相关参数。当 setInterval 运行时它会依照规定的时间间隔依次将列出的参数传递给指定的函数,直到你调用 clearInterval 将其终止。相关的示范代码如下: 

function show(){ 
    trace("每隔一秒我就会显示一次"); 
} 
var sh; 
sh=setInterval(show,1000); 
clearInterval(sh); 

js实例代码1:

function auto(){ 
    alert("到時間了") 
} 
var monitorInterval = null;  
function setAuto(time,isFrist){ 
    var intervalTime=time; 
    if(isFrist!="1"){ 
        if(intervalTime!="off"){ 
            monitorInterval= setInterval("auto()", intervalTime*1000); 
        }else{ 
            if(monitorInterval){    
                clearInterval(monitorInterval); 
                monitorInterval = null; 
            } 
        } 
    } 
} 

html实例代码2:

<table> 
    <tr> 
        <td nowrap="nowrap" bgcolor="#E8E8E8">自動更新</td> 
        <td align="left" bgcolor="#E8E8E8">
            <select onchange="setAuto(this.value,'0')"> 
                <option value="10">10sec</option> 
                <option value="20">20sec</option> 
                <option value="30">30sec</option> 
                <option value="60">1min</option> 
                <option value="300">5min</option> 
                <option value="600">10min</option> 
                <option value="1800">30min</option> 
                <option value="3600">60min</option> 
                <option value="off">Stay</option> 
            </select>
        </td> 
    </tr> 
</table> 

使用setinterval同步加载Ext多个Store

我们知道Ext js加载Store是异步加载的,这有很多好处,这里不再说明。但有时也需要多个store同步加载,比如:动态解析生成图表,需要同时加载完成图表样式、图表轴、图表序列和图表数据之后才能完整解析生成图表,任意一个store没有加载完成时,解析数据都会造成解析错误,所以必须保证全部store加载完成后才能正确进行解析。要怎么保存多个store加载的同步呢?具体实现如下:

var bChartArr =[false, false, false, false];  
//加载图表轴  
Ext.getStore("ChartAxes").load({  
    params:{ queryId:queryId },  
    callback:function(){  
        bChartArr[0] = true;  
    }  
});  
//加载图表序列  
Ext.getStore("ChartSeries").load({  
    params:{ queryId:queryId },  
    callback:function(){  
        bChartArr[1] = true;  
    }  
  
});  
//加载图表样式  
Ext.getStore("ChartStyle").load({  
    params:{ queryId:queryId },  
    callback:function(){  
        bChartArr[2] = true;  
    }  
});  
// 按钮  
Ext.getStore("Buttons").load({  
    params:{query_id:queryId},  
    scope:this,  
    callback:function(){  
        bChartArr[3] = true;  
    }  
});  
var me = this;  
// 等待所有的Storoe加载完成后执行  
var timer = setInterval(function(){  
    if(bChartArr[0] && bChartArr[1] && bChartArr[2] && bChartArr[3]){  
        clearInterval(timer); // 清除等待  
        // 解析图表样式、轴、序列动态生成图表  
        me.createChartPanel();  
    }  
},100);  

这样就有效的解决了Ext多个异步加载的store的同步问题。


说明:这里使用了数组来判断数据是否加载完成。其实另外两个方法应该也是可以的:

1、使用一个计数代替数组,每个store加载完成时给计数加1,最后判断计数达到预期值;

2、对Store不使用callback,而使用store的isLoading()方法,当所有Stroe的isLoading( )都返回false时认为加载完成。


在JS脚本中,多个setinterval之间出现干扰怎么办?

不能同时执行是肯定的,必然有一个先后次序,但是可以几乎是同时运行。如果你确定是互扰的问题,可以只定义一个setinterval,例如:

var timeIntervalNumber = 1;
var timeInterval = setInterval('doSomething()', 1000);
function doSomething() {
    if (timeIntervalNumber % 2) {...}
    if (timeIntervalNumber % 5) {...}
    timeIntervalNumber ++;
    if (timeIntervalNumber >= 2 * 5) {
        timeIntervalNumber = 1;
    }
}

或者如下面代码所示,页面也不会报错或者卡壳。

var firstInterval;
var secondInterval;
function firstAlert(){
	if(firstInterval) clearInterval(firstInterval);
<span style="white-space:pre">	</span>//处理所有
<span style="white-space:pre">	</span>.........
<span style="white-space:pre">	</span>firstInterval = setInterval('firstAlert()', 1000*2);
}


function secondAlert(){
	if(secondInterval) clearInterval(secondInterval);
<span style="white-space:pre">	</span>//处理所有
<span style="white-space:pre">	</span>.......


secondInterval = setInterval('secondAlert()', 1000*3);
	}
从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。 阅读详情

相关推荐

HC-05蓝牙模块AT指令配置避坑全记录:从配对失败到稳定主从通信

本文详细记录了HC-05蓝牙模块AT指令配置的全过程,从基础认知到主从通信的稳定实现。涵盖了进入AT模式的方法、关键AT指令详解、主从配对流程及常见故障排除,帮助开发者快速掌握蓝牙串口模块的配置技巧,避免常见配对失败问题。

weixin_42632434的博客 412

关于setInterval如何停止循环

关于setInterval如何停止循环

qq_30351747的博客 5376

grpc安装与简单demo测试

grpc安装: 由于工作需要,最近在学google的rpc开源框架;由于本人菜鸟一枚,而且是从Windows开发转到Linux;由于之前版本控制使用的是svn,没有使用过git,所以从GitHub上下载代码是通过浏览器下载zip格式的压缩文件,折腾了好几天了,发现了各种坑,各种缺少库,各种不知道怎么把这个库给装机器上。对于一个不熟悉Linux的人来说,这个体验简直糟糕透了。没办法了又在机器上装了...

old__captain的博客 4832

setInterval()方法的调用和停止。

这段时间在写一个打地鼠的javascript;关于倒计时的问题运用了setInterval()方法,但是在停止调用方面却遇到了一些问题。 一开始我尝试运用 if(条件){ setInterval(a,b); } 显然我对setInterval()的认识不足,这并不是一个需要反复调用的方法,实际上,setInterval()只需要调用一次就会无限调用/*我早该意识到这一点的*/ ...

XueDinge_Cat的博客 2万+

摄像头读取出现VIDIOC_STREAMON: No space left on device 错误

先说下原因,linux中为usb camera提供了一个标准的V4L2的驱动以方便使用,只要符合驱动规范就可以实现即插即用usb camera设备,即免驱动安装。 但市面上的USB 摄像头都是2.0的。usb bus的 bandwidth是有限的,而V4L2驱动采用的是贪心原则,即camera会要求获取最大带宽;因此将两个camera接入一路usb bus,打开第二个camera(尤其是采用YUV...

houge101的博客 9287

常见信号逻辑电平标准介绍:TTL、CMOS、ECL、LVDS、CML

逻辑电平是指数字信号电压的高、低电平,相关参数定义如下:(1)输入高电平门限Vih:保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于Vih时,则认为输入电平为高电平;(2)输入低电平门限Vil:保证逻辑门的输入为低电平时所允许的最大输入低电平,当输入电平低于Vil时,则认为输入电平为低电平;(3)输出高电平门限Voh:保证逻辑门的输出为高电平时的输出电平的最小值,逻辑门的输出为高电平时的电平值都必须大于此Voh;

liuchj的博客 1万+

JavaScript系列-18 周期函数Interval

javaScript系列 文章目录javaScript系列一、setInterval()和clearInterval()1.1 举例1.2 举例 一、setInterval()和clearInterval() 1.1 举例 setInterval("需要重复执行的函数名",重复的毫秒数); clearInterval(执行完setInterval()函数之后的返回值); 1.2 举例 <script type="text/javascript"> function displ

m0_46222379的博客 1877

2025华为杯第二十二届中国研究生数学建模竞赛C题:围岩裂隙精准识别与三维模型重构 - 完整解题分析+完整MATLAB源码!(下篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1614

setInterval实现定时停止

【代码】setInterval实现定时停止。

qq_37401609的博客 974

【存储原理】IO超时处理 块层block-scsi层之间

【存储原理】IO超时处理 块层block-scsi层之间

sinat_37817094的博客 1023

实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)

导读 本文主要介绍使用OpenCV对扫描文本矫正的应用实例及详细实现步骤。 背景介绍 在使用打印机或扫描仪扫描文档时,由于摆放位置差异难免造成扫描文档的倾斜。本文将使用OpenCV将倾斜的文档矫正水平并去除黑边。 实现步骤 本文只针对包含大部分文字的文档做倾斜矫正,思路来源是大部分文字倾斜后同一行的也在同一条直线,通过拟合直线计算文本倾斜角度,然后旋转来实现文本倾斜矫正。 详细步骤: ①加载倾斜图像 ②灰度转换+腐蚀+膨胀 ③Canny边缘检测 + 霍夫线变换检测直线 ...

Color Space的博客 3398

js动画缓动效果实现setInterval(),就是慢慢的停下来

<!DOCTYPE HTML> <html> <head> <title>js动画缓动效果实现setInterval(),就是慢慢的停下来</title> <meta charset="utf-8" /> <style> * { margin: 0; padding: 0; ...

tuzi007a的博客 740

openlayers全面教程306+【目录】

vue+openlayers系列教程旨在为开发者提供简单快捷的示例。在每一个示例中,解释相应的API知识点。

大剑师兰特的GIS世界 2万+

JS setTimeout和setInterval的区别

setTimeout() 是属于 window 的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。 语法 setTimeout(code, milliseconds, param1, param2, ...) setTimeout(function, milliseconds, param1, param2, ...) 参数 描述 code/function 必需。要调用一个代码串,也可以是一个函数。 milliseconds 可选。执行或调用 code/functi

顺其自然~专栏 681

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深入解析setTimeout与setInterval:事件循环、性能陷阱与最佳实践

在JavaScript异步编程中,理解任务调度机制是构建响应式应用的基础。其核心原理基于事件循环(Event Loop),它协调宏任务与微任务的执行顺序,确保非阻塞的用户体验。掌握这一原理对于优化代码性能、避免界面卡顿至关重要,尤其在处理动画、轮询等需要时间控制的场景时。本文聚焦于前端开发中最常用的两个调度函数——setTimeout和setInterval,通过剖析其注册、队列和执行的完整流程,揭示其延迟不精确的本质原因及可能引发的内存泄漏风险。文章将结合事件循环、宏任务等热词,详细阐述在复杂异步时序下的

weixin_34221332的博客 1023

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

前端基础学习之js-setInterval(定时器)、setTimeout(一次性定时器)

1.setInterval()和clearInterval() setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。 由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。 setInterval(code,millisec[,“lang”]) clearInterval(id_of_setinterval) 2.setTimeout()和clearTimeout() setTimeout() 方

no pains,no gains 841

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Javascript中setTimeout()和clearTimeout()还有setInterval()用法

var timeout; timeout = setTimeout(hideResultsNow, 200);   //设定一个延迟时间,时间到了才会执行相应的method clearTimeout(timeout); //使它停下来,这就要用到clearTimeout()。 setInterval("reloop()",1000);  //循环执行指定方法

7408

setTimeout, setInterval 与 requestAnimationFrame 隐藏的各种坑

使用 JavaScript 做动画时,或者做与时间有关的事情,你有三个选择:`setTimeout`, `setInterval` 和 `requestAnimationFrame` ,这三个函数有点类似,也有点区别,也有一些坑等你来踩。

研究与专注 1万+

setTimeout和setInterval,微信web开发工具使用教程

技术是没有终点的,也是学不完的,最重要的是活着、不秃。零基础入门的时候看书还是看视频,我觉得成年人,何必做选择题呢,两个都要。喜欢看书就看书,喜欢看视频就看视频。最重要的是在自学的过程中,一定不要眼高手低,要实战,把学到的技术投入到项目当中,解决问题,之后进一步锤炼自己的技术。技术学到手后,就要开始准备面试了,找工作的时候一定要好好准备简历,毕竟简历是找工作的敲门砖,还有就是要多做面试题,复习巩固。有需要面试题资料的朋友点击这里可以免费领取。喜欢看书就看书,喜欢看视频就看视频。

2401_84097798的博客 804

setTimeout和setInterval

作为DOM本身十分重要的2个异步执行函数,初学者感觉这个很不好理解,我简单写一写我的理解setTimeout (func, millisec); setInterval(func, millisec);这两个方法在形式看起来很相似,第一个参数是异步执行的函数(用字符串表示的代码也可以,不过很少这样用),第二个参数的时间(ms)。但其实这两个函数还是有很大区别的说的通俗一点,setTimeout()让

FareBlog 1011

setTimeout和setInterval的区别与差异

setTimeout: setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。setTimeout() 只执行 code 一次。 页面上显示就是这样,点击按钮就会在指定的2000毫秒弹出对话框。 setInterval: setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setInterval() 方法会不停地调用函数,直到 clearInte

雷潇的博客 887

setInterval和setTimeout的区别

学习js也有一段时间了,一直分不清setInterval和setTimeout的区别,每次看别人用到这两个定时器都会发出这样的疑问。今天正好捋顺一下。 区别: setInterval会不停的执行某个操作,直到clearInterval被调用才停下来。 setTimeout只会执行一次。 记忆: "interval"本身就具有超时的意思。 "timeout"这个词在体育赛事中经常出现,意思为暂停 ...

weixin_43844848的博客 374

day20-21方法setInterval与setTimeout

JS中setTimeout()的用法详解

RealRecall的博客 220

javascript早期动画循环(一)

在JavaScript中创建动画的典型方式,就是使用setInterval()方法来控制所有的动画,以下是一个使用setInterval()的基本动画循环。 (function(){ function aa() { doSome(); doOther(); } setInterval(aa, 100); })(); <!DOCTYPE html> <html la...

人生代码 ---- 公众号 1504

用js实现动画

1. 体验动画 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head lang="en"&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;style&gt; div { width

zl13015214442的博客 2万+
上一篇: 转换json格式的日期为Javascript对象的函数
下一篇: AJAX跨域请求获取JSON数据
cdming
博客等级 码龄22年 120粉丝 230原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值