Javascript事件循环机制 浅尝手记

引入

众所周知Javascript是一个单线程的机制,虽然可以依托多线程的浏览器实现页面如何实现页面复杂的渲染、事件响应,但仍不会改变其单线程的本质;所以对于js的事件循环机制的了解是一个前端人员的必备基础之一。

1 几个相关的简单概念(以下备注均以javascript为前提)

_ 执行上下文:execution context——js代码执行当前代码段的环境、变量的构成,参考
_ 函数调用栈-call stack——调度js代码、函数执行先后顺序的,一种有序数据结构,遵循FILO,参考
_ 队列-queue——调度js代码、函数任务执行先后顺序,一种有序数据结构,遵循FIFO,参考

2 事件循环(Event loop)

以下为简单记录,日后有时间再整理,

涉及主要概念:

1.函数调用栈
2.任务队列:
2.1 task: script、I/O、 UI-rendering、setTimeout、setInterval、setImmediate
2.2 jobs: process、Promise、

主要代码:

 console.log(6,"timeout:")
 });
new Promise(function(resolve){
 console.log(1,"promise1");
       for(var i=0;i<100;i++){
 	i==99&&console.log(2,"resolve");
 };
 console.log(3,"promise2");
 }).then(function(resolve){
 console.log(5,"then")
});
console.log(4,"global")

执行结果:

 2 "resolve";
 3 "promise2";
 4 "global";
undefined ;//暂时不清楚此处原因
 "timeout:"
posted @ 2017-06-17 11:23  hbzyin  阅读(189)  评论(0编辑  收藏  举报