零、前言

在本书中,我们将探讨 JavaScript 承诺的概念和实现。 这本书有一个不断发展的背景,将引导你从初学者的水平到大师水平的承诺。 这本书的每一章都会给你一个大纲,以实现一个具体的目标,这将帮助你实现并量化你在每一章中吸收的知识数量。

整本书的章节都是按照这样一种方式设计的,即随着你阅读此书而不断发展。 本书的每一章都分为两部分:一部分是概念构建部分,另一部分是实验部分,在这部分你将能够对概念片段进行取样,有时在代码中,有时在最佳实践中,有时在图像中。

前四章或多或少有点像理论知识,为您提供了 JavaScript 和承诺的坚实基础。 因此,如果您是一个新手,并且对 JavaScript 或承诺一无所知,那么您将从这些章节中学到很多东西。 其余章节更多的是面向技术的,你将学习在 WinRT、Angular.js、jQuery 和 Node.js 中实现承诺。 所以,如果你是一个专业,已经承诺的一些想法,你可以直接进入第五章,承诺在 WinRT,但我希望你读的所有章节更好的理解这本书。

我们将首先介绍 JavaScript,以及它从 90 年代末到 21 世纪头十年的起起落落。 我们将重点讨论异步编程是什么以及 JavaScript 如何使用它。 接下来,我将介绍承诺及其影响和实现方式。 为了使这本书更有趣,并向您传授更多知识,我将向您展示 promise 是如何在 Java(最成熟的面向对象编程语言之一)的核心位置上占据一席之地的。 这个附加内容将作为一个弯路,以更有效的方式澄清概念。

书的流程将引导您在一些最常用的 JavaScript 库中实现承诺。 我们将看到关于这些库的工作机制的示例代码。 最后,我们将以最后一章作为本书的结尾,向您展示 JavaScript 的下一个发展方向,为什么它在过去几年中获得了如此多的关注,以及 JavaScript 的未来可能是什么。

这本书的内容

第 1 章promise .js,介绍了 JavaScript 的历史,以及它如何成为现代应用开发的领先技术之一。 我们将讨论为什么在 90 年代早期需要 JavaScript,以及这门语言在其存在过程中是如何经历起起落落的。

第 2 章JavaScript 异步模型,解释了什么是编程模型,以及它们如何在不同的语言中实现,从简单的编程模型到同步模型再到异步模型。 我们还将看到任务是如何在内存中组织的,它们将如何根据它们的轮流和优先级服务,以及编程模型如何决定服务什么任务。

第三章应许范式,涵盖了应许的范式及其背后的概念。 我们将学习承诺的概念知识、延迟承诺、承诺的常见序列,以及承诺如何帮助分离业务逻辑和应用逻辑。 我们还将学习承诺和事件发射器之间的关系,以及承诺和事件发射器之间关系背后的概念。

第四章实现承诺讨论了我们为什么要实现承诺以及为什么选择 Java 作为本章的核心主题。 Java 比任何其他编程语言都具有更丰富的特性,而且它还具有更好的异步行为机制。 这一章是我们开始掌握承诺之旅的地方。

第 5 章WinRT 中的承诺解释了如何在 WinRT 中实现承诺。 我们将看到 Windows 平台上的承诺是如何发展的,以及它如何对不同的基于 Windows 的设备做出贡献。

第 6 章promise in Node.js,涵盖了 Node.js 是什么,从哪里这个最令人惊叹的库已经进化,谁构建了它,以及为什么和如何它帮助我们创建实时 web 应用。 我们将看到 Q,这是向 Node.js 提供承诺的最佳方式。 我们将看到如何使用 Q,然后我们将看到在 Node.js 中使用 Q 的不同方法。

第 7 章Angular.js 中的承诺,解释了承诺将如何在 Angular.js 中实现,它是如何发展的,以及承诺将如何帮助实现为实时 web 应用编写的应用。 我们还将看到 Q 库的功能和使用代码实现的 Angular.js 承诺,并学习如何在我们的下一个应用中使用它们。

第 8 章在 jQuery 的承诺,讨论了 jQuery 是如何开始成形的,以及它如何成为现代 web 开发的基本元素。 我们将学习如何构建基本的 jQuery 文档,以及如何调用嵌入到 HTML 文件中的函数。 我们将了解为什么我们开始在 jQuery 中使用 deferred 和 promise,以及它们如何帮助我们在基于 web 的平台和便携设备上创建前沿应用。

第 9 章JavaScript - The Future Is Now,讲述了 JavaScript 是如何改变游戏规则的,以及它如何拥有一个光明的未来。 我们还将探讨为什么 JavaScript 具有如此大的趋势和可采用性,这将使它在计算机科学的几乎每个领域的使用进入下一个层次。

你写这本书需要什么

如果您是一名软件工程师,想要了解更多关于 JavaScript 的有趣事实,以使您的生活更轻松,那么这本书很适合您。 一个简单和引人入胜的语言与叙述和代码示例使这本书容易理解和应用它的实践。 本书首先介绍了 JavaScript 的承诺以及它是如何随着时间的推移而发展的。 然后,您将学习 JavaScript 异步模型以及 JavaScript 如何处理异步编程。 接下来,您将了解 promise 范例及其优点。 最后,这本书将向您展示如何在 WinRT、jQuery 和 Node.js 等平台上实现承诺,这些平台在项目开发中使用。

为了充分利用本书,您应该了解基本的编程概念、JavaScript 的基本语法,并对 HTML 有很好的理解。

这本书是给谁的

这本书是写给所有想要在下一个项目中应用 promise 范例并从中获得最佳结果的软件/网络工程师的。 这本书有 JavaScript 承诺的所有基本和高级概念。 对于那些已经在他们的项目中使用承诺并且想要提高他们对这个概念的现有知识的工程师来说,这本书也可以作为一个参考。

这本书对于前端工程师来说是一个很好的资源,但是对于想要确保他们的代码在项目中无缝协作的后端工程师来说也是一个学习指南。

会议

在本书中,您将发现许多文本样式,它们可以区分不同类型的信息。 下面是这些风格的一些例子和它们的含义的解释。

文本代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 url、用户输入和 Twitter 句柄如下所示:“Theclick函数将调用(或执行)我们传递给它的回调函数。”

代码块的设置如下:

Q.fcall(imException)
.then(
    // first handler-fulfill
    function() { },

);

命令行输入或输出如下所示:

D:\> node –v
D:\> NPM  –v

新词语重要词语以粗体显示。 你在屏幕上看到的文字,例如,在菜单或对话框中,会出现这样的文本:“它应该变成绿色,并显示Success信息。”

注释

警告或重要注释出现在这样的框中。

提示

提示和技巧是这样的。

读者反馈

我们欢迎读者的反馈。 让我们知道你对这本书的看法——喜欢或不喜欢。 读者反馈对我们来说很重要,因为它可以帮助我们开发出你真正能够从中获得最大收益的游戏。

要向我们发送一般的反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在邮件的主题中提及书名。

如果你对某一主题有专长,并且你对写书或投稿感兴趣,请访问www.packtpub.com/authors查看我们的作者指南。

客户支持

现在,您是包书的骄傲所有者,我们有一些东西来帮助您从您的购买中获得最多。

下载示例代码

您可以从您的帐户http://www.packtpub.com下载您所购买的所有 Packt Publishing 书籍的示例代码文件。 如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,直接将文件通过电子邮件发送给您。

勘误表

尽管我们已经尽一切努力确保内容的准确性,但错误还是会发生。 如果您在我们的任何一本书中发现了错误——也许是文本或代码中的错误——如果您能向我们报告,我们将非常感激。 通过这样做,您可以避免其他读者感到沮丧,并帮助我们改进本书的后续版本。 如果你发现任何错误,请报告通过访问 http://www.packtpub.com/submit-errata,选择你的书,点击勘误表提交链接,并输入你的勘误表的细节。 一旦您的勘误表得到验证,您的提交将被接受,勘误表将被上传到我们的网站,或添加到该标题勘误表部分的任何现有勘误表列表中。

要查看之前提交的勘误表,请到https://www.packtpub.com/books/content/support,并在搜索栏中输入书名。 所需信息将出现在勘误表**部分下。

盗版

在互联网上盗版有版权的材料是所有媒体都存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在互联网上发现任何形式的我们作品的非法拷贝,请立即提供我们的地址或网站名称,以便我们采取补救措施。

请在<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,并提供疑似盗版资料的链接。

我们感谢您的帮助,以保护我们的作者和我们的能力给您带来有价值的内容。

问题

如果你对这本书的任何方面有问题,你可以通过<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们会尽力解决这个问题。**