自從2015年被引入JavaScript以來,Promise已經(jīng)成為這門語言的重要組成部分。所有新的異步應用程序接口都是基于Promise構(gòu)建的。正因為如此,深入理解Promise的原理是JavaScript開發(fā)人員的進階必修課,也是所有JavaScript編程工作的重中之重。本書共有5章,篇幅短小精悍,代碼清晰易懂。每一章從不同的方面展示了使用Promise的關(guān)鍵點和難點。隨書附贈的Promise速查表有助于隨用隨查。讀完本書,你將能在自己的項目中游刃有余地進行異步編程。現(xiàn)在就跟隨專業(yè)JavaScript程序員尼古拉斯·C.扎卡斯,開啟JavaScript Promise之旅吧!
1.Promise作為現(xiàn)代JavaScript開發(fā)中不可或缺的組成部分,對于處理異步操作和構(gòu)建高效的應用程序至關(guān)重要。
2.前端領(lǐng)域的專家尼古拉斯·C. 扎卡斯深入解析JavaScript,讓讀者快速深入理解Promise的核心概念。
3.篇幅短小精悍,5章內(nèi)容全面覆蓋JavaScript Promise關(guān)鍵知識點。
4.從實際應用的角度出發(fā),以清晰的代碼示例和深入淺出的講解,幫助讀者快速提高異步編程的效率和質(zhì)量。
5.隨書附贈Promise速查表,幫助讀者更好地理解和應用Promise,為日常開發(fā)工作提供幫助。
6.通過本書的學習,讀者將能夠在自己的項目中游刃有余地進行異步編程,提升自己的開發(fā)能力和技術(shù)水平。
[美]尼古拉斯·C. 扎卡斯(Nicholas C. Zakas)
前端技術(shù)“達人”,著有多部口碑佳作,包括影響一代人的前端巨著《JavaScript高級程序設(shè)計》(又被稱為“JavaScript紅寶書”),以及高分作品《高性能JavaScript》《深入理解ES6》《JavaScript面向?qū)ο缶返。此外,他還開發(fā)了流行JavaScript代碼分析工具ESLint。扎卡斯曾任雅虎公司前端技術(shù)主管,并受邀在領(lǐng)英、谷歌、Netflix、PayPal等公司做演講。
中文版序
前言
第 1章 Promise基礎(chǔ) 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 處理器和微任務(wù) 13
1.2 創(chuàng)建未解決的Promise 16
1.3 創(chuàng)建已解決的Promise 22
1.3.1 使用Promise.resolve() 22
1.3.2 使用Promise.reject() 24
1.3.3 非Promise 的thenable 對象 24
1.4 小結(jié) 28
第 2 章 鏈式Promise 31
2.1 捕獲錯誤 33
2.2 在鏈式Promise 中使用finally() 37
2.3 從鏈式Promise 中返回值 42
2.4 從鏈式Promise 中返回Promise 45
2.5 小結(jié) 54
第3 章 多個Promise 協(xié)同工作 57
3.1 Promise.all() 方法 57
3.2 Promise.allSettled() 方法 71
3.3 Promise.any() 方法 82
3.4 Promise.race() 方法 89
3.5 小結(jié) 95
第4 章 異步函數(shù)和await 表達式 97
4.1 定義異步函數(shù) 98
4.2 異步函數(shù)的不同之處 99
4.2.1 返回值總是一個Promise 100
4.2.2 拋出的錯誤是處于拒絕狀態(tài)的Promise 103
4.2.3 可以使用await 表達式 105
4.2.4 可以使用for-await-of 循環(huán) 114
4.3 頂層await 表達式 118
4.4 小結(jié) 120
第5 章 追蹤未處理的拒絕情況 123
5.1 檢測未處理的拒絕情況 124
5.2 在Web 瀏覽器中追蹤未處理的拒絕情況 126
5.2.1 在Web 瀏覽器中報告未處理的拒絕情況 131
5.2.2 在Web 瀏覽器中避免出現(xiàn)控制臺警告 133
5.2.3 進行處理 134
5.3 在Node.js 中追蹤未處理的拒絕情況 136
5.4 小結(jié) 142
后記 145
常見問題解答 147