返回信息流为什么1可以很快输出 但是link的颜色要2秒显示出来??
这是一条镜像帖。来源:北邮人论坛 / www-technology / #34744同步于 2016/3/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
求问setTimeout的问题
xssd
2016/3/18镜像同步20 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
可以参考下 http://www.alloyteam.com/2015/10/turning-to-javascript-series-from-settimeout-said-the-event-loop-model/
简单的就是 link 设置 background 被 while 循环阻塞了,这里涉及栈的操作。
JavaScript 引擎是基于单线程事件循环(Event Loop)的,就是理解成有一个事件队列。
(ps 浏览器是多线程的...)
然后 console.log 立即执行了,DOM 事件放入了事件队列中,接着执行 while 循环,所以就是 DOM 事件被阻塞住了...
猜猜下面这段代码执行结果是啥...
var start = new Date;
setTimeout(function(){
var end = new Date;
console.log('Time elapsed:', end - start, 'ms');
}, 500);
while (new Date - start < 1000) {};
再加一段...
function foo() {
console.log('first');
setTimeout(function() {
console.log('second');
}, 0);
}
for (var i = 0; i < 100; i++) {
foo();
}
【 在 xssd 的大作中提到: 】
: [upload=1][/upload]
: 为什么1可以很快输出 但是link的颜色要2秒显示出来??
赞一个
【 在 anthozoan77 的大作中提到: 】
: 可以参考下 http://www.alloyteam.com/2015/10/turning-to-javascript-series-from-settimeout-said-the-event-l
: .........
发自「贵邮」
【 在 stevesasuke 的大作中提到: 】
: JavaScript 是基于单线程事件循环(Event Loop)的,就是理解成有一个事件队列。
: 然后 console.log 立即执行了,DOM 事件放入了事件队列中,接着执行 while 循环,所以就是 DOM 事件被阻塞住了...
: 猜猜下面这段代码执行结果是啥...
: ...................
你是 YZY?