关于JS的事件队列问题


function waitThreeSeconds() {
    var ms = 3000 + new Date().getTime();
    while (new Date() < ms) {}
    console.log('finished function');
}

function clickHandler() {
    console.log('click event!');
}

document.addEventListener('click', clickHandler);


waitThreeSeconds();
console.log('finished execution');

代码运行等待3秒钟打印出finished function和finished execution,问题在于在这3秒里点击页面,没有触发clickHandler,而且等待前面两个打印出来才有显示,解释下为啥点击最后才执行?


同楼上回答。

javascript 是的单线程的,于是就产生了一种任务执行机制叫 eventloop。它维护了一个任务队列,完成一个任务才会开始下一个任务。

你的 waitThreeSeconds 函数中的 while 会在将当前队列堵塞三秒钟,即使在这3秒内你触发了 click ,这个任务会被推入队列等待执行。

‘即使在这3秒内你触发了 click’ 这一句话可能会让你觉得和 ‘单线程’ 有些冲突,明确的来说: 执行javascript 确实是单线程。 至于为什么在队列被堵塞的时候,异步任务依旧会被加入队列,这就和浏览器的实现有关系了(浏览器可是多线程的)


因为JS是单线程的,你这里的waitThreeSeconds()函数阻塞/占用了进程运行,必须要等这里运行完了,JS进程空闲了出来才能去触发的那堆事件。
要想在这等待的三秒内也能也能触发,那就要使用异步函数。



相关阅读:
bootsrap页面布局需, 横向滚动条显示多个,固定左侧表头
build opencv.sln出错
如何去掉百度地图api中的建筑物名称
一个页面调用同一个modal,返回值问题。
libpython2.7.so是个什么?为什么我用virtualenv创建了新的env之后,这个文件没有多一个?
网站上的付费资源(小说,视频)如何防止爬虫抓取的?
.NET连接oracle实现用户登陆出问题
用ubuntu安装一个程序,请问到这一步以后该怎么做?
WIN7 64位 vs2005新建的BCG工程, 编译时报错无法打开包括文件:“BCGCBProInc.h”
关于项目框架。现在很多项目逻辑都放在前端处理,在选择框架的时候,你们是如何选择的呢?
ios block 置空处理用NULL还是nil
docker-compose.yml可以指定本地镜像吗,我发现去docker.io拉取镜像太慢
新版本Chrome下,trigger('click')上传文件控件后,选择文件弹窗显示太慢?
java自定义异常问题
求介绍windows环境nodejs命令行工具
react中怎样在父组件中获取子组件中的Dom
php哪些情况可以获取来源网站的域名
在Linux上用forever实现Node.js项目自启动,windows上相同功能的命令是什么?
资讯中心搭建思路问题。
如果说声明的变量和函数的都要占用栈或堆内存的空间 那么是否应该有选择的尽量减少声明



快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 我爱你,妈妈800字 “六抓六促”创特色党员先进性学习培训有实效 高二数学新课程培训心得体会 美丽人生观后感300字 隔空对话,中秋月 几首旧作(古体新韵) 读《鼎湖山听泉》有感550字 生育保险政策2016 我的活宝同桌 星巴克事件有感作文400字 演讲材料选取技巧 雅与俗 一粒种子蛰伏在冬眠的岁月 读《我们是个快乐的写手》有感作文200字 “书呆子”爷爷 母爱深深初三作文 孩子,你得实践 不要骄傲的句子 而不是未知的东西 2013年一年级作文:春之乐曲 鲸的自述作文550字 海上卧病寄王临 36度的爱 那年我们十六七 优秀医疗人员个人先进事迹 我好累 精神文明建设先进工作者事迹材料 一笺心语,清幽岁月 公益文化广场舞蹈大赛领导致辞 飞机送去的梦想650字 走进党校思想汇报---将自己的行为始终与党保持一致 狗-天堂 项目工程人员请假条 孩子的写作能力该如何来提高 张小娴励志语录大全 青春好作伴妙笔著文章 小学班主任教学总结范文 高中高一作文350字:园丁 乡镇团组织挂职锻炼心得体会 《九日齐山登高》教案1 不打扫卫生的的检讨书 期待已久的雪 七年级政治上册《认识新自我》复习教案 女人就是上帝了吗? 圣诞意识流 怀念火盆/包国卿 2014年入党积极分子思想汇报11月 文字真让我着迷 中国梦,我的梦(教师征文作品) 酷热中安好作文600字 体验生活作文600字

Copyright © 2016 phpStudy |