<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### Promise的含義 `Promise`是異步編程的一種解決方案,比傳統的解決方案 - 回調函數和事件,更加合理且更加強大。ES6將其寫入標準,并原生提供`Promise`對象 所謂`Promise`,簡單來說就是一個容器,里面保存著某個未來才會結束的事件結果(通常是一個異步操作)。從語法來講,`Promise`是一個對象,從它可以獲取異步操作的消息。 `Promise`對象有以下兩個特點: 1. 對象的狀態不受外界的影響。`Promise`對象代表一個異步操作。它有3個狀態:`Pending`(進行中)、`Fulfilled`(已成功)和 `Rejected`(已失敗)。 2. 一旦狀態改變就不會再變,任何時候都可以得到這個結果。`Promise`對象的狀態改變只有兩種可能:從`Pending`變為`Fulfilled`和從`Pending`變為`Rejected`。只要這兩種情況發生,狀態就凝固了,不會再變,一直保持這個結果,這時就稱為`Resolved`(已定型) `Promise`也有以下幾個缺點: - 無法取消`Promise`,一旦新建就會立即執行,無法中途取消 - 如果不設置回調函數,`Promise`內部拋出的異常錯誤無法反應到外部 - 當處于`Pending`時,無法得知發展到哪一步,開始或即將結束 ### 基本用法 `Promise` 對象時一個構造函數,用來生成`Promise`實例。 ```js let promise = new Promise(function (rsolve, reject) { // ... if (/* 異步操作成功 */) { resolve(value) } else { reject(error) } }) ``` `Promise` 構造函數接受一個函數作為參數,該函數的兩個參數分別是 `resolve` 和 `reject`。 `resolve` 函數將 `Promise` 對象的狀態從 `Pending` 變為 `Resolved`,在異步操作成功時調用,并將異步操作的結果作為參數傳遞出去。 `reject` 函數將 `Promise` 對象的狀態從 `Pending` 變為 `Rejected`,在異步操作失敗時調用,并將異步操作報出的錯誤作為參數傳遞出去。 `Promise` 實例生成以后,可以用 `then` 方法分別指定 `Resolved` 和 `Rejected` 狀態的回調函數 ```js promise.then(function (value) { // success }, function (error) { // failure }) ``` 下面是一個 `Promise` 對象的簡單例子: ```js function timeout (ms) { return new Promise((resolve, reject) => { setTimeout(resolve, ms, 'done') }) } timeout(100).then((value) => { console.log(value) }) ``` `Promise`新建之后就會立即執行 ```js let promise = new Promise(function (resolve, reject) { console.log('Promise') resolve() }) promise.then(function () { console.log('Resolved') }) console.log('Hi') // Promise // Hi // Resolved ``` ### Promise.prototype.then() `Promise` 實例具有 `then` 方法,它定義在原型對象 `Promise.prototype` 上,它的作用是為 `Promise` 實例添加狀態改變時的回調函數。 ### Promise.prototype.catch() `Promise.prototype.catch` 方法用于指定發生錯誤時的回調函數 ### Promise.all() `Promise.all` 方法用于將多個 `Promise` 實例包裝成一個新的 `Promise` 實例 ### Promise.race() `Promise.race`方法同樣是將多個 `Promise` 實例包裝成一個新的 `Promise` 實例。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看