# II.前言

之前，我会害怕使用很多Web应用，现在我依赖于它们。当它们正常工作时，他们太棒了; 当他们没能正常工作，

那就是一场噩梦。尤其令人沮丧的事实是，并没有任何错误的JavaScript代码驱动的应用程序。不，问题是，

往往有被太多的代码在运行，也许是因为它在处理一个大数据集。最终的结果永远是一样的：在UI界面会卡死，并且

我会无奈地咒骂Web。

如今，这种情况不会经常发生。这几年我们修复了许多常见的JavaScript问题。没有像我希望的那样快速流行的东西

是JavaScript中的并发性。在我们的整个应用程序中都有一点点的并发性，但我们很少看到真正的并发JavaScript

代码。

让我们改变这一现状吧。

## 这本书涵盖了哪些内容

* “第1章，为何选择JavaScript并发？”，是对JavaScript中并发性的介绍。
* “第2章，JavaScript运行模型”，将指导您弄清楚运行JavaScript代码的机制。
* “第3章，使用Promises实现同步”，看看使用promises实现的同步技术。
* “第4章，使用Generators实现惰性计算”，将通过惰性计算让工作节省资源。
* “第5章，使用Web Workers”，着眼于在JavaScript中实现真正的并行性。
* “第6章，实用并行”，将帮助您确定要解决的并行化问题。
* “第7章，抽象并发”，将让你自己动手编写跟普通代码一样的并发代码。
* “第8章，使用NodeJS的Evented IO”，将向您展示并发语义在此环境中的工作原理。
* “第9章，高级NodeJS并发”，将学习特定的Node并发问题。
* “第10章，构建并发应用程序”，通过实例将前面的学习内容整合在一起。

## 学习这本书需要准备什么？

本书的要求如下：

• 任何现代浏览器的最新版本

• NodeJS（至少 4.0）

• 一款代码编辑器

## 这本书的阅读对象是谁？

JavaScript Concurrency是为任何想要学习如何编写更高效，功能强大且可维护的应用程序的JavaScript开发

人员编写的，这些应用程序利用了JavaScript语言的最新发展规范。并发，异步和并行编程的所有方面都会覆盖到，

在本书的最后，您将能够创建一个充分运用本书所涵盖的所有主题的完整应用程序。

## 约定

在这本书中，你会发现一些区别普通文本样式的信息。以下是这些样式的一些示例以及它们的含义解释。

文本中的代码字，数据库表名，文件夹名，文件名，文件扩展名，路径名，虚拟URL，用户输入和Twitter链接

展示如下：

“我们可以通过使用include指令包含其他上下文。”

代码块设置如下：

```javascript
//加载worker脚本，然后启动worker线程
var worker = new Worker（'worker.js'）;
```

新术语和重要单词以粗体显示。您在屏幕上看到的单词（例如，在菜单或对话框中）会在文本中显示如下：

> “单击” 下一步“按钮可以移动到下一个屏幕。
>
> 警告或重要说明出现在这样的框中。
>
> 提示和技巧看起来像这样。

## 读者反馈

欢迎来自我们读者的反馈。让我们知道您对本书的看法 - 您喜欢或不喜欢的内容。读者反馈对我们很重要，

因为它可以帮助我们写作您将真正获得最大收益的书籍内容。

要向我们发送一般反馈，只需发送电子邮件至<feedback@packtpub.com> ，并在邮件主题中提及该书的名称。

如果您有专业知识，并且您有兴趣写作或撰写书籍，请参阅www\.packtpub.com/authors上的作者指南。

## 客户支持

既然您是Packt书籍的拥有者，我们有很多东西可以帮助您从购买中获益最大。

## 下载示例代码

您可以从[http://www.packtpub.com网站上通过你的下载帐户获取您购买的所有Packt](http://www.packtpub.xn--compackt-n39lka52ii1fhzvg18aveimogqes23geh1ega393ucpwfex425cycm4yb97c) Publishing书籍示例

代码文件。如果您在其他地方购买了本书，可以访问[http://www.packtpub.com/support并注册，我们直接](http://www.packtpub.com/support%E5%B9%B6%E6%B3%A8%E5%86%8C%EF%BC%8C%E6%88%91%E4%BB%AC%E7%9B%B4%E6%8E%A5)

通过电子邮件发送给您。

## 勘误表

虽然我们已经尽力确保内容的准确性，但确实也会发生错误。如果您在我们的某本书中发现错误 - 可能是

文本或代码中的错误 - 如果您能向我们报告，我们将不胜感激。通过这样做，您可以使其他读者免于困惑，

并帮助我们改进本书的后续版本。如果您发现任何勘误，请访问<http://www.packtpub.com/submit-errata>

进行报告。选择你的书，点击勘误表提交表格链接，然后输入你的勘误表的详细信息。一旦您的勘误表得到验证，

您的提交将被接受，勘误表将上传到我们的网站或添加到该书籍的勘误表部分下的任何现有勘误表列表中。

要查看以前提交的勘误表，请访问[https://www.packtpub.com/books/content/support并在搜索字段中](https://www.packtpub.com/books/content/support%E5%B9%B6%E5%9C%A8%E6%90%9C%E7%B4%A2%E5%AD%97%E6%AE%B5%E4%B8%AD)

输入该书的名称。所需信息将显示在勘误表部分下。

## 盗版行为

互联网上受版权保护的材料盗版是所有媒体持续关注的问题。在Packt，我们非常重视保护我们的版权和许可。

如果您在互联网上以任何形式发现我们作品的任何非法副本，请立即向我们提供位置地址或网站名称，以便

我们采取补救措施。

请通过<copyright@packtpub.com>与我们联系，并提供可疑盗版资料的链接。

感谢您帮助保护我们的作者权益，我们也会有能力为您带来有价值内容。

## 问题

如果您对本书的任何方面有疑问，可以通过以下方式与我们取得联系：

<questions@packtpub.com>，我们将尽力解决问题。
