关于for循环中使用setTimeout】的更多相关文章

这两天在捣鼓作用域的问题,有的时候知识这个东西真的有点像是牵一发而动全身的感觉.在理解作用域的时候,又看到了一道经典的面试题和例子题. 那就是在for循环中嵌套setTimeout延时,想想之前面试的时候面试官问到我这个问题,然而我当时对这玩意儿根本没有深究,没有去理解:非常草率的回答了,面试官好心的给我 说这个涉及到setTimeout回调函数异步特性,啪啦啪啦,说的好几句都感觉晕乎了~也感觉JS这个东西真的需要深入的东西还很多,路也还很长. 直接进入主题了,先贴一段简单的代码: 结果是10次…
在For循环中执行setTimeOut()方法的代码,执行顺序是怎样的呢? 代码如下 function time() { for(var i= 0;i<5;i++){ setTimeout(function () { console.log(i); },1000) } } time(); 应该会有人会说,很简单呀,for循环进行遍历,并且每次有一个输出,那结果应该是0,1,2,3,4. 其实不然,运行上诉代码之后,控制台输出如下:5个5 下面解释下为什么是5个5. 首先关于最开始贴的代码,我们是…
代码片段: for(var i=0;i<8;i++){ setTimeout(function () { console.log(i) },0) } 输出了8次8,这跟js的执行顺序和作用域链有关. 1.js同步执行与异步执行 js的执行机制: js是单线程环境,从上到下.依次执行,即 同步执行:在这段代码中,for循环是同步代码,setTimeout是异步代码. js在执行代码的过程中,碰到同步代码会依次执行,碰到异步代码就会将其放入任务队列中进行等待,当同步代码执行完毕后再开始执行异步代码,…
我们先来简单了解一下setTimeout延时器的运行机制.setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数.本质上是作用域的问题. 因此若是这样将不会得到想要的结果输出1.2.3.4.5,而会连续输出5个6. for (var i=1; i<=5; i++) { setTimeout( function timer() { console.log( i ); }, i*1000 ); } 这是因为setTimeout是异步执行,每一…
我们先来简单了解一下setTimeout延时器的运行机制.setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数.本质上是作用域的问题. 因此若是这样将不会得到想要的结果输出1.2.3.4.5,而会连续输出5个6. for (var i=1; i<=5; i++) { setTimeout( function timer() { console.log( i ); }, i*1000 ); } 这是因为setTimeout是异步执行,每一…
for(var i=0;i<8;i++){ setTimeout(function () { console.log(i) },0) } 输出了8次8,这跟js的执行顺序和作用域链有关. 规则: 同步优先.异步靠边.回调垫底. 用公式表达就是:同步 => 异步(定时器  or  异步请求) => 回调 1.js同步执行与异步执行 js的执行机制: js是单线程环境,从上到下.依次执行,即 同步执行:在这段代码中,for循环是同步代码,setTimeout是异步代码. js在执行代码的过程…
1. SetTimeOut()              1.1 SetTimeOut()语法例子              1.2 用SetTimeOut()执行Function              1.3 SetTimeOut()语法例子              1.4 设定条件使SetTimeOut()停止              1.5 计分及秒的counter    2. ClearTimeout()    3. Set Flag   1.setTimeout( ) setT…
最近写koa的时候遇见需要在循环中使用async/await的情况,当然第一反应就是直接上forEach,然后就直接翻车了... 直接上代码: function handleSql(val) { return new Promise((resolve) => { setTimeout(() => { console.log(`延时${val}秒触发`) resolve(val); }, 1000); }) } [1,2,3].forEach(async index => { consol…
一.保留i值  通常情况下,因为一些效果我们需要获取到for循环中的i的值,但是往往拿到的都是最后一个i的值.下面介绍几种方法可以获取到i的值 1.自定义属性: arr[i].index = i; 以一个事件为例 例如: for(var i =0;i<arr.length;i++){ arr[i].index = i; arr[i].onclick = funtion(){ var index = this.index; console.log(index)  //  ===>1,2,3,4…
这几天跟着视频学习node.js,碰到很多的异步函数的问题,现在将for循环中出现的异步函数回调值的问题总结如下: 具体问题是关于遍历文件夹中的子文件夹的,for循环包裹异步函数的代码: for (var i = 0; i < files.length; i++) { var itemFile = files[i]; fs.stat("./uploads/" + itemFile, function (err, stats) { if (stats.isDirectory())…
1.setTimeout() 方法 setTimeout() 方法用于在指定的毫秒数后调用函数或执行表达式.返回一个 ID(数字),可以将这个ID传递给 clearTimeout() 来取消执行. setTimeout(code, milliseconds, param1, param2, ...) setTimeout(function, milliseconds, param1, param2, ...) //code|function:必需.要调用一个代码串,也可以是一个函数. 第三个及之…
一. 立即执行函数 windows中有个name属性,name='' '' var 如果我们用var name 去声明,那就会改变windows中name的值(因为我们不是在函数作用域中声明的,所以会覆盖全局的值) 为了避免这种问题,通常我们写一个立即执行函数(可读性不高) const 同样,如果我们用const去声明,也会改变全局的name属性 我们把const声明写在大括号里面,就不会改变全局的name属性了 二. for循环 常见的for循环,console.log(i) 会输出10,wh…
var声明变量: var只有函数作用域,没有块级作用域 //函数作用域的表现 function test(){ var i =10; console.log(i); } test(); console.log(i); // i is not defined; //块级作用域对var没有约束 { var i = 10; console.log(i); } console.log(i); 从上面的代码可了解到,块级作用域对var是没有约束作用的. let声明变量: let与var不同,let是有块级…
在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub List<String> list=new Arr…
continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环.在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差.因此Java就发明了一种带标签的continue和break语句,实际上它是一种带限制的专门用于循环的goto语句. 通常情况下我们使用的continue(或break)语句不带标签,这时也就是默认在当前的循环中执行continue(或break)语句.带标签的循环实际上…
List<String> list =new ArrayList<String>(); list.add("boss"); list.add("good"); list.add("No"); list.add("Fine"); System.out.println(list);//[boss, good, No, Fine] Collections.sort(list); System.out.prin…
首先需要了解一点Random函数的随机生成是和当前时间有关系,如果在短时间生成随机数,就会导致随机数生成出来是相同的. 不过我们可以在每次随机时指定一个Seed种子值,这样在循环里就可以每次获取不一样的随机数,记得Seed在循环中肯定是每次不一样的. 示例代码如下: int[] StringList = new int[length]; ; i < length; i++) { Random randomNum = new Random(i); StringList[i] = randomNum…
今日处理项目中的一个循环,本来就是一个小小的for循环,后来发现该段程序出现了问题,仔细检查代码没有发现其中的错误.无奈只好叫来了老大帮忙.通过在模版中断点调试(该方式只能自己写debugger断点)我们找到了问题的所在.首先看我们的循环: for(var i =0, len = arr.length; i<len; i++){ console.log(arr[i]); for(var i=0; i<x.length; i++) { console.log(x[i]); } } 这是一个很简单…
<!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/html; charset=utf-8"> <title>关于循环中索引的使用 - by 杨元</title> </head> <body> <h1>关于循环中索引的使</h1> <!--基础html框架-->…
使用Handlebars.js过程中,难免会使用循环,比如构造数据表格.而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上. Handlebars.js中获取循环索引很简单,只需在循环中使用{{@index}}即可. <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/html; charset=utf-8"&…
jsrender中使用for循环数据时有时需要访问父级数据. 而jsrender在循环中的父级数据存放在隐藏属性parent.parent.data中,使用案例如下 {{:#parent.parent.data}} 具体使用案例如: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>嵌套循环使用#parent访问父级数据 --- by 杨元</titl…
JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" name="username" id="username_1" value="" /> <input type="text" name="username" id="username_2&quo…
在bash中,如果循环在一个子shell中运行,那么在循环中对循环外面的变量的更改将在循环退出后不可见.像下面的例子: #!/bin/sh python run.py | while read line do echo $line let "var=var+1" done echo $var 最后面的echo输出的var仍然是1.原因是while循环位于管道中,这意味着在运行过程中,while循环实际是位于一个新的SHELL中的,while循环中的var变量和文件开头定义的var变量是…
其实函数引用的外部变量都是最后一次的值. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #box{ width:100px; height:100px; background-color:pink; } </style> <…
for循环中定义的变量在for循环体外也有效 <script> (function(){ var a = 111; for(var i=0;i<5;i++){ var carl = 111; console.log(i); } alert("carl is:"+carl); })(); </script> 结果: carl is:111…
for(Shop s:list) { System.out.println(s.getName()); String sql="select shopId,sum(ele_bank+ele_card+water_card+water_bank+coal_card+coal_bank) as zonghe ,sum(sale_bank+sale_card) as sale,sum(cigarette_card+cigarette_bank) as bacco, sum(yidong_card+yi…
for循环中使用了return,导致没有循环完毕就结束了整个方法的执行.…
参考:Javascript对象中关于setTimeout和setInterval的this介绍 使用最后一个方法终于弄好了,简直了,在对象中使用setTimeout原来是这样的 做的是分钟倒计时,倒数3分钟 function clock(){ this.min = 3; //倒数的分钟 this.speed = 1000; //setTimeout时间 var timeId = ""; //保存setTimeout对象 this.time = this.min * 60;//3分钟等于…
还是昨天的那个简单的小项目,已经花了一天的时间了 - - .从&&的用法,到CSStext,到今天马上要谈的闭包(closure),通过一个小东西,真真发现了自己的各方面不足.昨天发完源码之后,自己手写一遍,还是碰到了一些问题,最主要的就是for循环中的闭包问题. 这是我之前的代码,大致就是这样: for(var i = 0;i<=oBtn.length;i++){ oBtn[i].onclick=function(){ change_style(oDiv,oAttr[i],oVal…
在学习ajax的过程中,我曾经遇到过这样的一个问题,为了得到一个详情列表,我要先向服务器去请求得到索引表,简单描述就是ajax中的success中的for循环中再次嵌套了ajax,结果第二层success中的ajax的success并不能取得上层ajax的success中的值. 我先使用ajax发送请求获得索引表,再使用for循环去依次使用索引目录去获得详情列表中想要的数据.当时因为水平有限,用了一个最不合理的方式,于是产生了这么一个莫名其妙的问题. 但是很奇怪的是每次传入的参数都是undefi…