易于理解的“asynchronous事件”的定义?

我经常遇到这个词,甚至在谷歌search之后,仍然无法理解它究竟意味着什么。 是否有一些易于理解的(理想情况下带有例子)定义了某人可以提供的asynchronous事件?

谢谢!

非编程示例:

同步你想要一个披萨吃晚饭,你是不是冻结types。 所以你必须停止玩WOW,这会打乱你的氏族。 你去厨房做面团,盖上酱汁,加上奶酪,扼杀你最喜欢的培根。 你花了20分钟的时间,在烤箱里再放10分钟。 计时器发出嘟嘟声,你把热的馅饼拉出来。 你可以坐在电脑前,吃披萨,继续征服。

asynchronous你在玩WOW时想吃披萨。 你在第五台显示器上打开一个浏览器窗口。 你加载比萨网站,并订购你的额外芝士培根比萨与咸肉蒜茸酱的一面。 你回到你的袭击,20分钟后,门铃响了。 你得到比萨。 你坐在电脑前,吃披萨,继续征服。

那有什么区别? 浪费宝贵的WOW时间20-30分钟的一种方式,另一种方式浪费20美元加小费。

您的页面从服务器传送到客户端浏览器,在互联网上的某处。 浏览器已经在屏幕上绘制了页面,而某个人或某个东西正在查看它。 这是一个等待游戏。 眼睛来回移动,快速跳跃地看着这个或那个细节,不时地飞到边上,远离屏幕,调查在环境中的分心。 时钟滴答。 页面被动地发出柔和的被动,当用户不活跃时,手松散地悬在鼠标上,脖子弯曲,眼睛越来越意图吸引你的页面提供的东西。

突然间,没有任何警告,光标开始移动,因为鼠标上的手稍微变硬,开始在桌子的粗糙表面上轻推小塑料凸起。 随着鼠标的移动,它在屏幕上的代理移动得非常模仿,在你的页面内容中放过有趣的图像和诙谐的评论。 最终做出决定,动作暂停,轻微的肌肉或两个合同,鼠标button被一个坚持的手指压下。 鼠标中的微动开关触发电子脉冲,突然间浏览器意识到发生了什么:点击鼠标。

总而言之,关于用户在浏览页面时所做的一切,已经以浏览器,网页中的任何客户端代码以及服务器上驻留的任何东西完全不可预知的方式发生。 人类行为之间没有可知的“等待时间”。 因此,由挂在用户计算机上的设备传输的动作发生在他们发生的时间,而不是按照可预测的时钟 – 即它们是asynchronous发生的。

想一想面试的结束,他们的家伙说:“不要打电话给我们,我们会打电话给你”。 这是asynchronous事件的本质。

通常你定义函数,并明确地调用函数。 你的程序有一个从第1行开始,然后是第2行的结构,除了一些条件代码和迭代,调用函数等外,还有一个简单的线性同步结构。

但是在某些情况下,你有一些行为是由程序的直接控制之外的事件触发的,这些事件来自程序之外,比如用户界面事件(用户点击鼠标)或networking事件(有人试图连接到你的服务器)。 您的代码不会直接生成这些事件。 它们是在程序之外生成的,通常由操作系统根据用户界面设备和其他系统的监视来生成。 这些被称为asynchronous事件。

只要记住,“不要打电话给我们,我们会打电话给你”

“在编程中,asynchronous事件是独立于主程序stream而发生的asynchronous事件,asynchronous事件是以非阻塞方式执行的事件,允许主程序stream继续处理。

借助Ajax,Web应用程序可以在后台asynchronous地从服务器检索数据,而不会干扰现有页面的显示和行为。“

当你点击编辑和保存时它是asynchronous发生的。

asynchronous事件是在应用程序主线程之外运行的事件。

理解的最好方法是与同步运行的事件进行比较。 最典型的例子是加载一个网页。

当你去到这个页面,你点击了一个链接,并等待页面加载,无法进行交互或使用此页面,直到完成加载。 相比之下,如果这个页面有一个AJAX事件(即asynchronousJavaScript和XML事件)与某个用户动作相关联,那么这个页面将会asynchronous地加载来自另一个源的一些数据 – 在理论上与任何其他动作一起进行。

具有两个同步事件(A和B)的示例:首先A执行某些操作。 当A完成时,B做了一些事情。

两个asynchronous事件(A和B)的示例:A和B同时执行某个操作,两个事件都不会等待另一个事件。

这里是一个JavaScript中的asynchronous操作的例子(你需要打开你的JavaScript控制台)

console.log('One!'); setTimeout(function(){console.log('Two!');},0); //Doesn't wait console.log('Three!');}; //OUTPUT: //One! //Three! //Two! 

console.log('Two!')的调用将被执行,而不会阻塞其后发生的其他代码。

在真实的情况下,用某人单击网页上的buttonreplacesetTimeout。 对button单击的响应最终会发生,而不会阻止其他代码执行,如页面呈现。

简而言之,它意味着在未知的时间之后发生的事情,所以不要期待立即的结果。

例如,“妈妈,我可以有五块钱吗?”

把钱伸出我的手,希望她能立即给我钱(同步)。

实际上,她会看我一两分钟,然后决定在她想要的时候做出反应(asynchronous)。

当两个不同的事件发生彼此分开,所以你不能这样做

task1 task2

没有检查任务1真的完成了。

问,/吨

asynchronous事件是那些我们不知道什么时候会发生的事件,例如当服务器被请求时,我们不知道什么时候它会满足我们的请求或UI事件,我们不知道什么时候用户会点击一个button或其他用户界面元素,但尽pipe它的页面或应用程序正在发生的其他事情,它不会阻止任何东西说,页面灰色的所有用户界面,直到某些文件从服务器不来或某事件发生的事情都是独立的这是asynchronous事件的力量,简单地说独立事件

同步 :事件将同时发生,同步。

asynchronous :事件将一次发生,下一个事件将在前一个事件完成后开始。

同步比 asynchronous事件

事件发生时,会立即调用一些事件处理程序。 这些被称为“同步”事件。 DocumentNew就是一个例子。 一旦用户创build一个新的文档,它就会被调用。

然而,有些事件在事件发生后不久就会被调用,通常在很短的空闲时间之后。 这些被称为“asynchronous”事件。 它们是asynchronous的,因为如果在事件发生的确切时间调用用户编写的macros,它将使Source Insight崩溃。