# 關於本書

> \[2019-01-23] 本書正在進行修訂中，部份章節內容可能尚未完整
>
> \[2019-01-23] 由於 Gitbook 之前網址全部變動，加上系統有點不太穩定，目前主要的內容將移轉到新網站中，本書的新網址為<http://promise.eddychang.me>

這是一本學習 JavaScript 程式語言中，有關 Promise 語法的中文入門書籍。

本書原本是[從 ES6 開始的 JavaScript 學習生活](https://legacy.gitbook.com/book/eyesofkids/javascript-start-from-es6/details)書中的一個章節，由於涉及的相關內容較多，而且有獨立的主題，所以移出來成為一本小型的電子書。

由於 Promise 不適合完全沒有使用過 JavaScript 程式語言的開發新手使用，建議你要觀看本書前，最好需具備以下的知識，以免有看沒有懂:

* JavaScript 基礎的知識
* Callback(回調)特性
* Closure(閉包)特性
* 錯誤處理
* 事件處理與事件迴圈(Event Loop)

如果你對 JavaScript 程式語言有興趣入門，你可以參考這本書[從 ES6 開始的 JavaScript 學習生活](https://legacy.gitbook.com/book/eyesofkids/javascript-start-from-es6/details)中的內容。

[開始閱讀本書內容](https://github.com/eyesofkids/javascript-start-es6-promise/tree/41be58d9bfad5926b1955290d6513dad685b93fa/docs/contents/ch1_intro/README.md)

## 寫作格式

本書使用了以下的風格作為撰寫風格:

### 專有名詞

對於專有名詞，例如函式庫中的定義、函式、方法、物件等專用名詞，保留原字詞不進行"取代式"的翻譯，而使用括號(())加註其後作為補充翻譯，例如:

```
state(狀態) 與 props(屬性)
```

### 符號

提供的符號，儘可能使用括號(())加註符號在字句中。例如:

```
單行註解使用雙斜線符號(//)。
```

### 中文字詞與符號

可以使用全形的逗號(，)、分號(、)與句號(。)，但儘量不使用用全形的括號(（）)、框號(「」)與其他符號等。而是使用半形符號。

適當的在中文字詞的前後加上空白字元，作為明顯的區隔出這個字詞。例如:

```
使用 擴充套件->管理 進入這個管理的頁面。
```

### 範例程式碼風格

#### 不使用分號作為每行程式碼的結尾

本書的所有程式碼，每行後面都"不"再使用分號(semicolon)(;)作為程式碼字句之用。

> 註：JavaScript 可以不需要用分號(;)來分行，有許多知名的函式庫例如 npm、redux、 Bootstrap 都已經採用這個撰寫風格。

參考資訊:

* [Semicolons in JavaScript are optional](http://mislav.net/2010/05/semicolons/)
* [An Open Letter to JavaScript Leaders Regarding Semicolons](http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding)

#### 使用單引號作為字串定義

本書的所有程式碼，在 JavaScript 的字串定義均使用單引號(')，而非使用雙引號(")。

### 其他參考

* [翻譯指引 Translation Guide](https://github.com/eyesofkids/javascript-style-guide-translate)

## 發問與回饋

本書的儲存庫使用 github，如果對本書的內容有疑問、建議或有寫錯的地方，請至以下的連結中發 ISSUE:

* <https://github.com/eyesofkids/javascript-es6-promise>

如果你有任何的問題，可以使用作者的個人部落格與其中的連絡方式，發問或尋求協助:

* <http://eddychang.me>

## 授權規定

本電子書的使用的授權規定如下，如果有其他問題請再連絡作者:

\
本著作係採用[創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款](http://creativecommons.org/licenses/by-nc-sa/4.0/)授權.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://eddy-chang.gitbook.io/javascript-start-es6-promise/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
