本書的目的是以目前還在制定中的 ECMAScript 6 Promises 規(guī)范為中心,著重向各位讀者介紹 JavaScript 中對 Promise 相關(guān)技術(shù)的支持情況。
通過閱讀本書,我們希望各位讀者能在下面三個目標(biāo)上有所收獲。
像上面所提到的那樣,本書主要是以 ES6 Promises,即 JavaScript 的標(biāo)準(zhǔn)規(guī)范為基礎(chǔ)的、Promise 的相關(guān)知識為主要講解內(nèi)容。
在 Firefox 和 Chrome 這樣技術(shù)比較超前的瀏覽器上,不需要安裝額外的插件就能使用 Promise 功能,此外 ES6 Promises 的規(guī)范來源于 Promises/A+ 社區(qū),它有很多版本的實現(xiàn)。
我們將會從基礎(chǔ) API 開始介紹可以在瀏覽器的原生支持或者通過插件支持的 Promise 功能。 也希望各位讀者能了解這其中 Promise 適合干什么,不適合干什么,能根據(jù)實際需求選擇合適的技術(shù)實現(xiàn)方案。
本書的閱讀對象需要對 JavaScript 有基本的了解和知識。
如果你讀過上面的其中一本的話,就應(yīng)該非常容易理解本書的內(nèi)容了。
另外如果你有使用 JavaScript 編寫 Web 應(yīng)用程序的經(jīng)驗,或者使用 Node.js 編寫過命令行、服務(wù)器端程序的話,那么你可能會對本文中的一些內(nèi)容感到非常熟悉。
本書的一本分章節(jié)將會以 Node.js 環(huán)境為背景進(jìn)行說明,如果你有 Node.js 基礎(chǔ)的話,那么一定會非常容易理解這部分內(nèi)容了。
Promise#then 這種寫法表示的是 Promise 的實例對象的 then 這一方法。對象方法都采用 object.method 的形式。
這沿用了 JavaScript 中的使用方式,Promise.all 表示的是一個靜態(tài)方法。
這部分內(nèi)容主要講述的是對正文部分的補(bǔ)充說明。
我們推薦使用內(nèi)置對 Promise 支持的瀏覽器來閱讀本書。
Firefox 和 Chrome 的話都支持 ES6 Promises 標(biāo)準(zhǔn)。
此外,雖然不是推薦的閱讀環(huán)境,但是讀者還是能在 iOS 等移動終端上閱讀本書。
http://wiki.jikexueyuan.com/project/javascript-promise-mini-book/images/0.1.png" alt="picture0.1" />
本網(wǎng)站使用了 Promise 的 Polyfill 類庫,因此即使在不支持 Promise 的瀏覽器上也能執(zhí)行示例代碼。
此外像下面這樣,各位讀者可以通過運(yùn)行按鈕來運(yùn)行可執(zhí)行的示例代碼。
var promise = new Promise(function(resolve){
resolve(42);
});
promise.then(function(value){
console.log(value);
}).catch(function(error){
console.error(error);
});
如果你對哪里有疑問的話,都可以現(xiàn)場修改代碼并執(zhí)行,以加深對該部分代碼的理解。
本書中示例代碼都可以在 GitHub 上找到。
本書采用 AsciiDoc 格式編寫。
此外代碼倉庫中還包含本書示例代碼的測試代碼。
源代碼的許可證為 MIT 許可證,文章內(nèi)容可以基于 CC-BY-NC 使用。
如果有意見或者問題的話,可以直接在 GitHub 上提 Issue 即可。
此外,你也可以在 在線聊天 上留言。
各位讀者除了能免費(fèi)閱讀本書,也有編輯本書的權(quán)利。你可以在 GitHub 上通過 Pull Requests 來貢獻(xiàn)自己的工作。