间隔几秒执行某方法

javascript 间隔5秒执行一个方法

 

javascript没有类似Thread中的sleep()方法,只能模拟

 

一个这个方法实现。

 

function sleep(n){

 var start=new Date().getTime();//定义起始时间的

 

毫秒数

 while(true){

  var time=new Date().getTime();//每次执行循环取

 

得一次当前时间的毫秒数

  if(time-start>n){//如果当前时间的毫秒数减去起始

 

时间的毫秒数大于给定的毫秒数,即结束循环

   break;

  }

 }

}

 

function test(n){//用这个函数测试吧

 for(var i=0;i<3;i++){

  alert(i);

  sleep(5000);//每隔5000毫秒执行一次for循环

 }

}

------------------------------

JavaScript 计时事件

通过使用 JavaScript,我们有能力作到在一个设定的时

 

间间隔之后来执行代码,而不是在函数被调用后立即执行

 

。我们称之为计时事件。

在 JavaScritp 中使用计时事件是很容易的,两个关键方

 

法是:

setTimeout()

未来的某时执行代码

clearTimeout()

取消setTimeout()

setTimeout()

语法

var t=setTimeout("javascript语句",毫秒)

setTimeout() 方法会返回某个值。在上面的语句中,值

 

被储存在名为 t 的变量中。假如你希望取消这个 

 

setTimeout(),你可以使用这个变量名来指定它。

setTimeout() 的第一个参数是含有 JavaScript 语句的

 

字符串。这个语句可能诸如 "alert('5 seconds!')",或

 

者对函数的调用,诸如 alertMsg()"。

第二个参数指示从当前起多少毫秒后执行第一个参数。

提示:1000 毫秒等于一秒。

实例

当下面这个例子中的按钮被点击时,一个提示框会在5秒中

 

后弹出。

<html>

<head>

<script type="text/javascript">

function timedMsg()

 {

 var t=setTimeout("alert('5 seconds!')",5000)

 }

</script>

</head>

 

<body>

<form>

<input type="button" value="Display timed 

 

alertbox!" onClick="timedMsg()">

</form>

</body>

</html>

实例 - 无穷循环

要创建一个运行于无穷循环中的计时器,我们需要编写一

 

个函数来调用其自身。在下面的例子中,当按钮被点击后

 

,输入域便从 0 开始计数。

<html>

 

<head>

<script type="text/javascript">

var c=0

var t

function timedCount()

 {

 document.getElementById('txt').value=c

 c=c+1

 t=setTimeout("timedCount()",1000)

 }

</script>

</head>

 

<body>

<form>

<input type="button" value="Start count!" 

 

onClick="timedCount()">

<input type="text" id="txt">

</form>

</body>

 

</html>

clearTimeout()

语法

clearTimeout(setTimeout_variable)

实例

下面的例子和上面的无穷循环的例子相似。唯一的不同是

 

,现在我们添加了一个 "Stop Count!" 按钮来停止这个

 

计数器:

<html>

 

<head>

<script type="text/javascript">

var c=0

var t

 

function timedCount()

 {

 document.getElementById('txt').value=c

 c=c+1

 t=setTimeout("timedCount()",1000)

 }

 

function stopCount()

 {

 clearTimeout(t)

 }

</script>

</head>

 

<body>

<form>

<input type="button" value="Start count!" 

 

onClick="timedCount()">

<input type="text" id="txt">

<input type="button" value="Stop count!" 

 

onClick="stopCount()">

</form>

</body>

 

</html>

///

setTimeout("alert('test00000000000')",5000);    

 

//5秒后弹出对话框     

 

    setInterval("alert('test')",1000);    //每隔1

 

秒执行函数al  

 

    function alert(str)  

    {  

        alert(str);  

    } 

------------------------

setInterval(function(){这里面写你要执行的东

 

西},1000)

--------------

 

 //源程序7.2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"

"http://www.w3.org/TR/REC-html140/strict.dtd">

<html>

<head>

<meta http-equiv=content-type 

 

content="text/html; charset=gb2312">

<title>Sample Page!</title>

<script language="JavaScript" 

 

type="text/javascript">

<!--

var TimerID;

var dir=1;

var str_num=0;

//用于动态显示的目标字符串

var str="Welcome To JavaScript World!";

//设定动态显示的状态栏信息

function startStatus()

{

var str_space="";

str_num=str_num+1*dir;

if(str_num>30 || str_num<0)

{

dir=-1*dir;

}

for(var i=0;i<str_num;i++)

{

str_space+=" ";

}

window.status=str_space+str;

}

//状态栏滚动开始

function MyStart()

{

TimerID=setInterval("startStatus();",100);

}

//状态栏滚动结束,并更新状态栏

function MyStop()

{

clearInterval(TimerID);

window.status="The Moving Status have been 

 

stopped!";

}

 

//

定时执行代码|延迟执行代码

 

文章分类:Web前端

Ext Core提供了TaskRunner、TaskMgr和DelayedTask三

 

个类来执行定时任务,其中TaskMgr是TaskRunner的一个

 

静态实例。 

 

TaskRunner类的作用是在设置的时间间隔内定时执行指定

 

任务,其使用方法请看下面代码。 

 

Js代码  

var stop = false;  

 

//任务定义  

 

var task = {  

 

  run:function(){  

 

    if(!stop){  

 

       //执行处理  

 

       console.log(new Date());  

 

    }else{  

 

      runner.stop(task);  //停止执行  

 

    }  

 

  },  

 

  interval:30000 //单位为毫秒,目前定义时间间隔为

 

30秒  

 

};  

 

var runner = new Ext.util.TaskRunner();  

 

runner.start(task);  

 

 

Js代码  

//也可以使用TaskMgr类  

 

Ext.TaskMgr.start({  

 

  run :function(){  

 

  },  

 

  interval:1000  

 

}  //

 

// Start a simple clock task that updates a div 

 

once per second

var task = {

    run: function(){

        Ext.fly('clock').update(new Date

 

().format('g:i:s A'));

    },

    interval: 1000 //1 second

}

Ext.TaskMgr.start(task);

 

-----------------------

  stop( Object task ) : Object 

Stops an existing running task. 

Stops an existing running task. 

Parameters: 

task : Object 

The task to stop 

 

Returns: 

Object 

The task 

这是API文档中的详细说明,你应该知道了吧

yayg (中级程序员) 2009-12-04

// 任务 

var task = { 

   run:function(){ 

   if(count == 0) { 

      window1.hide(); 

      Ext.TaskMgr.stop(task);// 需要停止的任务对象 

   } 

   Ext.getDom('closeDivCount').innerHTML ="<br><br>" + mesage + ", " + count + "秒钟后自动关闭窗口。"; 

   count--; 

   }, 

   interval:1000 

}; 

Ext.TaskMgr.start(task); 

 

// 如果你不要传入参数的话,可以考虑一下使用TaskRunner里的stopAll: 

var runner = new Ext.util.TaskRunner(); 

runner.start(task); 

runner.stop(task);// 需要停止的任务对象 

runner.stopAll();// 立即停止当前运行的所有任务

hearken01 (高级程序员) 2009-12-04

Js代码  

var task = { //定义一个任务  

    run: function(){  

        Ext.fly('clock').update(new Date().format('g:i:s A'));//更新当前时间  

    },  

    interval: 1000 //1 秒钟更新一次  

}  

Ext.TaskMgr.start(task);//开始执行这个任务  

 

 

Ext.TaskMgr.stop(task);//结束这个任务  

 

 

//不想传递参数可以用Ext.TaskMgr.stopAll(); 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当您需要在Java中实现某个方法在一定时间内根据时间间隔重复调用,但同时需要在超过一定时间后停止重复调用时,您可以使用ScheduledFuture。 下面是一个示例代码,该代码会在20秒内每隔1秒、2秒、3秒交替重复调用run()方法,超过20秒后停止调用: ``` import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class ScheduledFutureDemo { private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private ScheduledFuture<?> future; private int count = 0; public void startTask() { final Runnable task = new Runnable() { public void run() { count++; System.out.println("Task count: " + count); if (count == 20) { stopTask(); } else { long delay = count % 3 + 1; // 1秒、2秒、3秒交替 future = scheduler.schedule(task, delay, TimeUnit.SECONDS); } } }; future = scheduler.schedule(task, 1, TimeUnit.SECONDS); } public void stopTask() { future.cancel(false); scheduler.shutdown(); } public static void main(String[] args) { ScheduledFutureDemo demo = new ScheduledFutureDemo(); demo.startTask(); } } ``` 在这个示例中,我们首先创建了一个ScheduledExecutorService来管理定时任务。然后我们定义了一个startTask()方法,该方法创建了一个Runnable对象task并将其传递给scheduler.schedule()方法,该方法会在1秒后开始执行task,并且在执行完task后会根据count的值计算出下一次执行的时间间隔(1秒、2秒、3秒交替),并调用scheduler.schedule()方法重复执行task。 在task的run()方法中,我们对任务执行的次数进行计数,并在达到20次时调用stopTask()方法停止任务。在每次执行完task后,我们根据count的值计算出下一次执行的时间间隔,并调用scheduler.schedule()方法重复执行task。 在stopTask()方法中,我们调用future.cancel()方法取消任务的重复调用,并调用scheduler.shutdown()方法关闭ScheduledExecutorService。 最后,在main()方法中,我们实例化了ScheduledFutureDemo类并调用了startTask()方法来启动定时任务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值