龙空技术网

异步 JavaScript—第 4 部分…

庄志炎 127

前言:

今天各位老铁们对“js四”都比较珍视,兄弟们都想要知道一些“js四”的相关知识。那么小编也在网摘上搜集了一些有关“js四””的相关文章,希望同学们能喜欢,小伙伴们快快来学习一下吧!

在第 3 部分中,我们讨论了异步回调。 回顾一下,我们使用浏览器的帮助来给人一种 JavaScript 是异步的错觉。 setTimeout() 是浏览器全局对象的一部分,它允许我们产生同步 JavaScript 代码是异步的错觉。 图1。

阻塞代码

假设我们有一个带有单个按钮的精美裤子网页。我们永远不知道用户何时会点击该按钮。可能是现在,也可能是几个小时后。我们只是不知道。因为 JavaScript 是同步的,这意味着页面只是坐在那里等待按钮被点击。它挂起。无法继续执行下一行代码 — 直到单击按钮。这就是所谓的阻塞代码。在按下按钮之前,一切都被阻止。

阻塞代码:在其他代码完成之前,代码无法执行

要观察类似的阻塞行为,请在控制台中键入 alert()。图 2 — alert() 方法是一种同步浏览器方法,它完全阻止所有内容,直到用户关闭对话框。从用户的角度来看,阻塞代码是可怕的,通常是最坏的情况。用户不能对页面做任何事情。它被封锁了!他们不能滚动、放大、单击按钮、发送消息、单击喜欢。该页面实际上已经死了!

那么浏览器如何防止阻塞代码呢?换句话说,它如何改进 JavaScript 的同步执行模型?浏览器为我们提供了异步方法作为其 web-apis 的一部分。我们使用这些异步方法将事件侦听器添加到按钮或元素。事件侦听器异步等待,直到单击按钮。然后它执行一些代码来响应点击。这样,网页就可以自由地做其他有用的事情了。有许多类型的事件侦听器,例如在单击鼠标或加载页面时触发的事件。

让我们看一个事件监听器的例子。将图 3 中的代码输入 Web 浏览器的控制台,然后按 Enter。现在单击控制台左侧白色文档内的任意位置。观察文档颜色如何从白色变为红色。图 4. 我的朋友们,这是异步 JavaScript 的作用。我们正在做的是监听文档正文上的单击事件,当该事件发生时,我们将文档的 CSS 背景颜色属性更改为红色。此外,请注意浏览器如何将正文样式异步更改为 <body style="background-color: red;"></body>。图 5

现在我们对为什么阻塞代码不好而异步代码好的原因有了更好的理解,让我们在第 5 部分中让您稍微了解一下事件循环。 了解事件循环将使这些概念更加深入人心。 一旦你完全理解了事件循环,你将为成为世界级的异步程序员奠定基础。

图 6 显示了 JavaScript 事件循环的高级概述。

标签: #js四