如何观察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代码块完毕后,立刻进入以下三个阶段,然后再按顺序查找下一个代码块,再继续执行以下三个阶段,无论是外部脚本文件(不异步加载 ...
随机推荐
- php preg_库正则匹配
<?php //preg_库提供的正则 preg_match();//进行正则表达式匹配 /* preg_match (pattern , subject, matches) 参数 描述 pat ...
- Python自动化之pickle和面向对象初级篇
pickle模块扩展 1 pickle之文件操作 示例1 with open("test", 'rb') as f: lines = f.readlines() print(pic ...
- 无密码执行sudo指令
参考:http://askubuntu.com/questions/334318/sudoers-file-enable-nopasswd-for-user-all-commands 配置: 执行vi ...
- 有向图寻找(一个)奇环 -- find an oddcycle in directed graph
/// the original blog is http://www.cnblogs.com/tmzbot/p/5579020.html , automatic crawling without l ...
- VS 2012: Post build 中使用 Signtool.exe,对于特殊password中字符的处理方法
众所周知,在VS(Visual Studio)里面可以利用post build 进行一些类似于CMD或者批处理的操作. 最近的项目中用到了MicroSoft的SignTool工具,目的是要把一个数字签 ...
- Strobogrammatic Number
Strobogrammatic Number I A strobogrammatic number is a number that looks the same when rotated 180 d ...
- Verify Preorder/Inorder/Postorder Sequence in Binary Search Tree
Verify Preorder Sequence in Binary Search Tree \Given an array of numbers, verify whether it is the ...
- yum安装所需要的开发库
yum groupinstall "Development tools" -y yum install zlib-devel bzip2-devel openssl-devel n ...
- Delphi操作Excel大全
Delphi操作Excel大全 DELPHI操作excel(转)(一) 使用动态创建的方法 首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp ...
- ABAP 自建透明表维护
*&---------------------------------------------------------------------* *& Report ZMMR011 ...