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