自从2015年被引入JavaScript以来,Promise已经成为这门语言的重要组成部分。所有新的异步应用程序接口都是基于Promise构建的。正因为如此,深入理解Promise的原理是JavaScript开发人员的进阶必修课,也是所有JavaScript编程工作的重中之重。本书共有5章,篇幅短小精悍,代码清晰易懂。每一章从不同的方面展示了使用Promise的关键点和难点。随书附赠的Promise速查表有助于随用随查。读完本书,你将能在自己的项目中游刃有余地进行异步编程。现在就跟随专业JavaScript程序员尼古拉斯·C.扎卡斯,开启JavaScript Promise之旅吧!
1.Promise作为现代JavaScript开发中不可或缺的组成部分,对于处理异步操作和构建高效的应用程序至关重要。
2.前端领域的专家尼古拉斯·C. 扎卡斯深入解析JavaScript,让读者快速深入理解Promise的核心概念。
3.篇幅短小精悍,5章内容全面覆盖JavaScript Promise关键知识点。
4.从实际应用的角度出发,以清晰的代码示例和深入浅出的讲解,帮助读者快速提高异步编程的效率和质量。
5.随书附赠Promise速查表,帮助读者更好地理解和应用Promise,为日常开发工作提供帮助。
6.通过本书的学习,读者将能够在自己的项目中游刃有余地进行异步编程,提升自己的开发能力和技术水平。
[美]尼古拉斯·C. 扎卡斯(Nicholas C. Zakas)
前端技术“达人”,著有多部口碑佳作,包括影响一代人的前端巨著《JavaScript高级程序设计》(又被称为“JavaScript红宝书”),以及高分作品《高性能JavaScript》《深入理解ES6》《JavaScript面向对象精要》等。此外,他还开发了流行JavaScript代码分析工具ESLint。扎卡斯曾任雅虎公司前端技术主管,并受邀在领英、谷歌、Netflix、PayPal等公司做演讲。
中文版序
前言
第 1章 Promise基础 1
1.1 Promise的生命周期 2
1.1.1 用then()分配处理器 4
1.1.2 用catch()分配拒绝处理器 7
1.1.3 用finally()分配解决处理器 8
1.1.4 为已确定的Promise分配处理器 12
1.1.5 处理器和微任务 13
1.2 创建未解决的Promise 16
1.3 创建已解决的Promise 22
1.3.1 使用Promise.resolve() 22
1.3.2 使用Promise.reject() 24
1.3.3 非Promise 的thenable 对象 24
1.4 小结 28
第 2 章 链式Promise 31
2.1 捕获错误 33
2.2 在链式Promise 中使用finally() 37
2.3 从链式Promise 中返回值 42
2.4 从链式Promise 中返回Promise 45
2.5 小结 54
第3 章 多个Promise 协同工作 57
3.1 Promise.all() 方法 57
3.2 Promise.allSettled() 方法 71
3.3 Promise.any() 方法 82
3.4 Promise.race() 方法 89
3.5 小结 95
第4 章 异步函数和await 表达式 97
4.1 定义异步函数 98
4.2 异步函数的不同之处 99
4.2.1 返回值总是一个Promise 100
4.2.2 抛出的错误是处于拒绝状态的Promise 103
4.2.3 可以使用await 表达式 105
4.2.4 可以使用for-await-of 循环 114
4.3 顶层await 表达式 118
4.4 小结 120
第5 章 追踪未处理的拒绝情况 123
5.1 检测未处理的拒绝情况 124
5.2 在Web 浏览器中追踪未处理的拒绝情况 126
5.2.1 在Web 浏览器中报告未处理的拒绝情况 131
5.2.2 在Web 浏览器中避免出现控制台警告 133
5.2.3 进行处理 134
5.3 在Node.js 中追踪未处理的拒绝情况 136
5.4 小结 142
后记 145
常见问题解答 147