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:"
上一篇:jQuery Animation实现CSS3动画


下一篇:Eclipse中Egit冲突解决