如何观察JS的事件队列的执行划分
也就是说,不同的操作函数,操作符,JS将其放入事件队列是不一样的。。。
比如:
外部函数和内部函数,就是分两次放入事件循环的尾端的。
比如,多个操作符组成的链式操作,也有可能是放不同的操作批次进入事件循环链的。
因为下面代码中的输出就显示了异步事件循环在JS当中的体现。
好好体味了一个小时。
var test = function() {
for(var i = 0; i < 5; i++) {
console.log(i+ " test outter");
(function(i) {
setTimeout(function() {
console.log(i);
}, 2000);
})(i);
}
};
var test2 = function() {
var ret = [];
for(var i = 0; i < 5; i++) {
console.log(i+ " test2 outter");
(function(i) {
ret[i] = function() {
console.log(i + " test2 inner");
return i;
}
})(i);
}
console.log(ret);
return ret;
};
var test0 = test(), test1 = test2()[2]();
var test2 = test2()[2](), test3 = test();
输出:
"0 test outter"
"1 test outter"
"2 test outter"
"3 test outter"
"4 test outter"
"0 test2 outter"
"1 test2 outter"
"2 test2 outter"
"3 test2 outter"
"4 test2 outter"
[function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}]
"2 test2 inner"
"0 test2 outter"
"1 test2 outter"
"2 test2 outter"
"3 test2 outter"
"4 test2 outter"
[function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}, function () {
window.runnerWindow.proxyConsole.log(i + " test2 inner");
return i;
}]
"2 test2 inner"
"0 test outter"
"1 test outter"
"2 test outter"
"3 test outter"
"4 test outter"
0
1
2
3
4
0
1
2
3
4
如何观察JS的事件队列的执行划分的更多相关文章
- JS引擎线程的执行过程的三个阶段(二)
继续JS引擎线程的执行过程的三个阶段(一) 内容, 如下: 三. 执行阶段 1. 网页的线程 永远只有JS引擎线程在执行JS脚本程序,其他三个线程只负责将满足触发条件的处理函数推进事件队列,等待JS引 ...
- JS的解析与执行过程
JS的解析与执行过程 全局中的解析和执行过程 预处理:创建一个词法环境(LexicalEnvironment,在后面简写为LE),扫描JS中的用声明的方式声明的函数,用var定义的变量并将它们加到预处 ...
- js中的延迟执行和定时执行
在js中,延迟执行函数有两种,setTimeout和setInterval,用法如下: function testFunction(){Console.log('hovertree.com');} s ...
- [转]js中confirm实现执行操作前弹出确认框的方法
原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在 ...
- JS匿名函数自执行函数
JS匿名函数自执行函数:(function(){})();(function(){}) 这是一个函数,函数后面接(),则是调用函数 比如(function(arg){console.log(arg); ...
- js判断浏览器类型 js判断ie6不执行
js判断浏览器类型 $.browser 对象 $.browser.version 浏览器版本 var binfo = ''; if ($.browser.msie) { binfo = " ...
- JS延时一秒执行
//JS延时一秒执行 setTimeout(function(){ window.history.go(0); }, 1000);
- js解析器的执行原理
首先看一段代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- JS引擎线程的执行过程的三个阶段(一)
浏览器首先按顺序加载由<script>标签分割的js代码块,加载js代码块完毕后,立刻进入以下三个阶段,然后再按顺序查找下一个代码块,再继续执行以下三个阶段,无论是外部脚本文件(不异步加载 ...
随机推荐
- linux下vi命令大全[转]
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...
- mysql日期加减<转>
1. MySQL 为日期增加一个时间间隔:date_add() set @dt = now(); select date_add(@dt, interval 1 day); - 加1天 select ...
- 5 HandlerIterator处理程序迭代器类——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso Handler ...
- tomcat 访问软连接
Linux创建软连接: ln -s 源文件 目标文件 tomcat安装目录 / conf目录下的:context.xml文件在 <Context />; 里面加上 allowLinking ...
- 亲自动手用HTK实现YES NO孤立词识别
很久以前的发在研学论坛的帖子了,再重新整理了一下,希望对新手有用. 完整版链接:http://yun.baidu.com/s/1hapcE 第一步 创建语音文件 录音 命令:HSLab any_nam ...
- 转:jQuery弹出二级菜单
<html> <head> <meta http-equiv="content-type" content="text/html; char ...
- php过滤ascii控制字符
还记得以前在工作中,将爬来的其它网站的数据导到xml.但是会遇到一个问题:即网页会有ascII的控制字符. 一开始以为是别人为了防止采集而加入的,然后发现一个就往过滤表里加一个.直到慢慢发现,他们都是 ...
- JavaScript Window对象
1.Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL,并定义了方法来使窗口载入新的文档.Location对象的href属性是一个字符串,后者包含 ...
- 《C++ Primer》 ---- 关于变量 与 基本类型
类型是所有程序的基础; C++ 定义了几种基本类型: 字符型(char 和 wchar_t),整型(short int long bool),浮点型(float doubel) 并且提供自定义数 ...
- Word转图片(使用Spire.doc)
Spire.Doc for .NET是一款由E-iceblue公司开发的专业的Word .NET类库.支持.net,WPF,Silverlight, 下载地址:http://www.e-iceblue ...