一次性定时器 setTimeout

 for(var i=0;i<6;i++){
        setTimeout("console.log(i)",0);
            }   //6,6,6

知识点

定义任务函数:function task(){.......}

启动定时器:   timer=setTimeout(task,wait);//任务函数,等待时间

停止定时器: 停止等待   clearTimeout(timer);

原理:  1. 启动定时器时:  js引擎将定时器的任务函数和间隔时间,添加到定时器中等待被调用,同时为该任务生成唯一的序号。

2. 定时器会遍历每个任务,按照时间间隔,自动调用到时间的函数。

3. 定时器并没有直接调用函数,而是将函数调用加入一个回调队列(callback queue)。

4. 回调对列中的函数,必须等到主程序(ECS)中执行完了才能执行。所以要等for循环结束,i=6后才开始执行

setInterval/setTimeout的第一个参数,可以是一个字符串格式的js语句。

时间: 2024-12-29 12:16:45

一次性定时器 setTimeout的相关文章

使用定时器settimeout、setInterval执行能传递参数的函数

无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决.经网上查询后整理如下: 例如对于函数hello(_name),它用于针对用户名显示欢 迎信息: var userName="jack"; //根据用户名显示欢迎信息 function hello(_name){ alert("hello,"+_name); } 这时,如果企图使用以下语句来使hello

js for循环下的定时器setTimeout失效?

最近做项目 在写js的时候遇到这么一个问题:我需要写一个类似于黑客帝国的效果 页面不断有数据往下展示 于是我想到要定时器的功能 定时(500毫秒)在页面上 一行行 显示出数据 但是 同时我后台还需要取其他数据(不是一次性取出的)于是想使用 外层嵌套一个for循环 让js 将第一次取出的数据定时展示结束后 再取第二段数据 结果 发现 js不支持这种 for循环下 使用定时器的功能  for(var i=1;i<10;i++)   {    setTimeout("alert('i="

Javascript 笔记与总结(2-13)定时器 setTimeout 和 setInterval

定时器可以让 js 效果每隔几秒钟执行一次或者 n 秒之后执行某一个效果.定时器不属于 javascript,是 window 对象提供的功能. setTimeout 用法: window.setTimeout('语句',毫秒); //指定毫秒后执行一次语句 [例] <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>D

关于定时器 setTimeout

1.这里不考虑线程问题.把javascript想象成在时间线上运行,页面载入时,首先执行的是<script>标签中的代码,之后,将执行更多代码,当进程空闲时,下个代码就被触发并执行 如图: 2.定时器的队列工作方式是:当特定的时间过去后将代码插入: 关于定时器要记住最重要的事情是:制定的时间间隔表示何时将代码添加到队列中: 而不是何时执行代码: 给队列添加代码并不意味值会立即执行,只表示会尽快执行.设定一个200MS 后执行的定时器不代表200ms后代码就立刻执行,只表示200ms后被添加到对

javascript定时器:setTimeout与setInterval

概述: setTimeout:在指定的延迟时间之后调用一个函数或者执行一个代码片段,只执行一次: setInterval:周期性地调用一个函数(function)或者执行一段代码,重复执行: 语法格式及示例: setTimeout: var timer=setTimeout(function(){ //要执行的代码 code },delay); * delay 是延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生.但是实际的延迟时间可能会稍长一点 * code  是delay毫

清除定时器 和 vue 中遇到的定时器setTimeout问题

--------------VUE项目中遇到一个问题.a.vue 文件中触发setTimeout后,使用按钮跳转至其他页面,快速返回至a.vue页面后 发现定时器仍然在走. 例子:a.vue代码 window.setTimeout(function(){ window.location.href = "/serverMonitor?t="+ new Date().getTime(); },5000) 解决办法: window.setTimeout(function(){ if(this

web 开发之js---js 中的定时器setTimeout(function,time),setinterval(function,time)

####10秒自动跳转 Html代码   <div class="jf_register"> <h2>您好,欢迎光临<fmt:message key="b2cShowName"/>!<a class="blue" href="<%=path%>/LoginRegist_turnToLogin">请登录</a></h2> </div>

JavaScript定时器 setTimeout与setInterval 浅析

一. 前情提要 1)JavaScript 是运行在单线程的执行环境中的 2)由浏览器安排事件的执行顺序 二.setTimeout 使用场景: 设定代码在未来的某个时间执行,而执行的时机是不能保证的. 工作方式: 在特定的时间过去之后将时间插入执行队列,注意,并不是立即执行 三.重复的定时器 setInterval 使用场景: 在设定的时间段内在代码执行队列中插入一段待执行代码 注意: 当有定时器中的代码正在执行时,会跳过这次插入 缺点:即使跳过了某些间隔代码的执行,在定时器代码执行时间比设定的时

定时器setTimeout/setInterval中变量报错:not defined 的解决方法

首先声明本人资质尚浅,如有错误,欢迎指正.共同提高. ----------------------------------------------------------------------------------- 首先声明:本文不重点讨论this作用域,而是讨论普通变量在定时器中容易报错的情况: setTimeout的基本用法不再重述, 详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp bug: setTimeout