<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                首先讓我們來了解一下到底什么是Promise。 > Promise是抽象異步處理對象以及對其進行各種操作的組件。 其詳細內容在接下來我們還會進行介紹,Promise并不是從JavaScript中發祥的概念。 Promise最初被提出是在?[E語言](http://erights.org/elib/distrib/pipeline.html)中, 它是基于并列/并行處理設計的一種編程語言。 現在JavaScript也擁有了這種特性,這就是本書所介紹的JavaScript Promise。 另外,如果說到基于JavaScript的異步處理,我想大多數都會想到利用回調函數。 使用了回調函數的異步處理 ~~~ getAsync("fileA.txt", function(error, result){ // 傳給回調函數的參數為(error對象, 執行結果)組合 if(error){// 取得失敗時的處理 throw error; } // 取得成功時的處理 }); ~~~ Node.js等則規定在JavaScript的回調函數的第一個參數為?`Error`?對象,這也是它的一個慣例。 像上面這樣基于回調函數的異步處理如果統一參數使用規則的話,寫法也會很明了。 但是,這也僅是編碼規約而已,即使采用不同的寫法也不會出錯。 而Promise則是把類似的異步處理對象和處理規則進行規范化, 并按照采用統一的接口來編寫,而采取規定方法之外的寫法都會出錯。 下面是使用了Promise進行異步處理的一個例子: ~~~ var promise = getAsyncPromise("fileA.txt"); // 返回promise對象 promise.then(function(result){ // 獲取文件內容成功時的處理 }).catch(function(error){ // 獲取文件內容失敗時的處理 }); ~~~ 我們可以向這個預設了抽象化異步處理的promise對象, 注冊這個promise對象執行成功時和失敗時相應的回調函數。 這和回調函數方式相比有哪些不同之處呢? 在使用promise進行一步處理的時候,我們必須按照接口規定的方法編寫處理代碼。 也就是說,除promise對象規定的方法(這里的?`then`?或?`catch`)以外的方法都是不可以使用的, 而不會像回調函數方式那樣可以自己自由的定義回調函數的參數,而必須嚴格遵守固定、統一的編程方式來編寫代碼。 這樣,基于Promise的統一接口的做法, 就可以形成基于接口的各種各樣的異步處理模式。 所以,promise的功能是可以將復雜的異步處理輕松地進行模式化, 這也可以說得上是使用promise的理由之一。 接下來,讓我們在實踐中來學習JavaScript的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>

                              哎呀哎呀视频在线观看