jas*_*ogd 88 javascript events asynchronous terminology definition
我经常遇到这个术语,即使在谷歌搜索之后,仍然无法理解它究竟意味着什么.是否有一些易于理解(理想情况下有例子)定义了某人可以提供的异步事件?
谢谢!
epa*_*llo 422
非编程示例:
同步 你想要一个比萨饼吃晚餐,你就是冷冻的.所以你必须停止玩WOW,这会扰乱你的公会.你去厨房,做面团,盖上酱汁,加入奶酪,然后扼杀你最喜欢的培根馅料.你花了20分钟的时间在烤箱里再做10分钟的披萨.计时器发出哔哔声,然后拉出热馅饼.您可以坐在电脑前,吃披萨,继续进行突袭.
异步 你在玩WOW时想吃披萨.您在第5台显示器上打开浏览器窗口.你加载比萨网站,并订购你的额外俗气培根披萨与培根油蒜酱.你回到你的突袭,20分钟后门铃响了.你得到了披萨.你坐在电脑前,吃披萨,继续你的突袭.
那么区别是什么呢?一种方法是浪费20-30分钟的宝贵WOW时间,另一种方式是浪费20美元加上小费.
Poi*_*nty 19
您的页面从服务器传送到客户端浏览器,位于Internet的某个位置.浏览器在屏幕上绘制了页面,有人 - 或某些东西 - 正在查看它.这是一场等待的比赛.眼睛来回移动,在快速跳跃中接受这个或那个细节,不时地向侧面飞去,远离屏幕,以调查环境中的干扰.时钟滴答作响.当用户徘徊不活动时,页面会被轻柔地,被动地发光,手放在鼠标上方松散,脖子向下弯曲,眼睛越来越倾向于邀请您的页面提供的东西.
突然,没有任何警告,光标开始移动,因为鼠标上的手稍微变硬并开始轻推桌子粗糙表面上的小塑料凸起.当鼠标移动时,屏幕上的代理移动模仿,在页面内容中放过有趣的图像和诙谐的评论.最终做出决定,运动暂停,肌肉或两个轻微收缩,鼠标按钮被坚持的手指按下.鼠标中的微动开关触发电子冲击,突然浏览器意识到发生了什么:鼠标点击.
总而言之,关于用户在注视页面时所做的一切都发生在浏览器,网页中的任何客户端代码以及服务器上的任何内容的完全不可预测的状态.人类行为之间没有可知的"等待时间".因此,由连接到用户计算机的设备传输的动作发生在它们发生时,而不是根据可预测的时钟 - 也就是说,它们是异步发生的.
小智 18
想想面试的结束,他们的家伙说:"不要打电话给我们,我们会打电话给你".这是异步事件的本质.
通常,您定义函数并显式调用函数.你的程序有一个结构,它从第1行开始,然后是第2行,除了一些条件代码和迭代,调用函数等,还有一个简单的线性同步结构.
但在某些情况下,你必须由事件的程序直接控制外部触发的动作,事情来自境外节目,如用户界面事件(用户点击鼠标)或网络事件(有人试图连接到你的服务器).您的代码不会直接生成这些事件.它们是在程序之外生成的,通常由操作系统根据用户界面设备和其他系统的监视生成.这些被称为异步事件.
请记住,"别打电话给我们,我们会打电话给你"
Dej*_*vic 12
"在编程中,异步事件是独立于主程序流的事件.异步动作是在非阻塞方案中执行的动作,允许主程序流继续处理."
"使用Ajax,Web应用程序可以在后台异步检索服务器中的数据,而不会干扰现有页面的显示和行为."
单击"编辑并在SO上保存"时,它将异步发生.
cha*_*imp 12
异步事件是在应用程序主线程外部运行的事件.
理解的最佳方式是与同步运行的事件进行比较.最典型的例子是加载网页.
当您转到此页面时,您单击了一个链接并等待加载页面,并且在加载完成之前无法与该页面进行交互或使用此页面.相比之下,如果此页面具有与某些用户操作相关联的AJAX事件(即异步JavaScript和XML事件),则此页面将异步加载来自另一个源的一些数据 - 与正在进行的任何其他操作并行(理论上).
两个同步事件(A和B)的示例:First A做了一些事情.当A完成时B会做一些事情.
两个异步事件(A和B)的示例:A和B都同时执行某些操作,并且两个事件都不等待另一个事件.
这是javascript中的异步操作示例(您需要打开javascript控制台)
console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};
//OUTPUT:
//One!
//Three!
//Two!
Run Code Online (Sandbox Code Playgroud)
调用console.log('Two!')将在不阻塞其后发生的其余代码的情况下执行.
在实际场景中,将某个人点击网页上的按钮替换为setTimeout.最终会发生对按钮单击的响应,而不会阻止其他代码执行,例如页面呈现.
简单地说,它意味着在未知的时间之后发生的事情,因此不要指望立即产生结果.
例如,"妈妈,我可以有5美元吗?"
把钱拿出来是因为我希望她立刻给我钱(同步).
实际上,她会看着我一两个小时,然后决定在她想要的时候做出反应(异步).