JS事件循环详解
来源:互联网 发布:mac os10.7.5如何升级 编辑:程序博客网 时间:2024/05/17 19:22
本文讲什么?
伴随着JavaScript这种web浏览器脚本语言的普及,对它的事件驱动交互模型,以及它与Ruby、Python和Java中常见的请求-响应模型的区别有一个基本了解,对您是有益的。在这篇文章中,我将解释一些JavaScript并发模型的核心概念,包括其事件循环和消息队列,希望能够提升你对一种语言的理解,这种语言你可能已经在使用但也许并不完全理解。
这篇文章是写给谁的?
这篇文章是针对在客户端或服务器端使用或计划使用JavaScript的web开发人员的。如果你已经精通事件循环,那么这篇文章的大部分对你来说会很熟悉。对于那些还不是很精通的人,我希望能给你提供一个基本的了解,这样可以更好地帮助你阅读和编写日常代码。
非阻塞I / O
在JavaScript中,几乎所有的I/O都是非阻塞的。这包括HTTP请求,数据库操作和磁盘读写,单线程执行要求在运行期执行一个操作时,提供一个回调函数,然后继续做其它的事情。当操作已经完成时,消息和已提供的回调函数一起插入到队列。在将来的某个时候,消息从队列移除,回调函数触发。
虽然这种交互模型可能对已经习惯使用用户界面的开发人员很熟悉,比如“mousedown,”和“click”事件在某一时刻被触发。这与通常在服务器端应用程序进行的同步式请求-响应模型是不同的。
让我们来比较一下两小块代码,发出HTTP请求到www.google.com和输出响应到控制台。首先看看Ruby,配合使用Faraday(一个Ruby 的HTTP 客户端开发库):
response = Faraday.get 'http://www.google.com'puts responseputs 'Done!'
执行路径很容易跟踪:
- 执行get方法,执行的线程等待,直到收到响应
- 从谷歌收到响应并返回给调用者,它存储在一个变量中
变量的值(在本例中,就是我们的响应)输出到控制台
值“Done!“输出到控制台
阅读全文
0 0
- JS事件循环详解
- js--事件--事件循环
- js--事件--事件循环
- js运行机制—事件循环(Event Loop)详解
- JS 循环设置事件
- Node.js事件循环
- Node.js 事件循环
- Node.js事件循环
- Node.js 事件循环
- node.js事件循环
- Node.js 事件循环
- Node.js 事件循环
- Node.js 事件循环
- js循环绑定事件
- [Node.js]事件循环
- [Node.js]事件循环
- js事件循环
- node.js事件循环
- 位图
- 树状数组——三种用法详解
- 微信小程序支付中的prepay_id获取方法,以及微信支付统一签名算法闭坑
- 最长回文子串manacher算法
- Win/CentOS/MacOS Chrome/Firefox/IE/Safari DNS缓存时间与刷新
- JS事件循环详解
- C. Fixing Typos----栈
- ng-grid双选盒子
- PLC编程全科班+人机界面编程+电机+变频器通信培训
- Andrid studio 引用多个module时jar包重复的解决
- uva 725 Division
- String 之 搜索字符 indexOf 和 lastindexOf
- 从理论到实践,手把手教你如何用 TensorFlow 实现 CNN
- 【树形dp】poj 1947 Rebuilding Roads