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

                ### 異步操作與async函數 * 異步與回調 * Promise * Generator * Thunk * async * * * * * #### 異步與回調 > 注:“本文檔主要在于講解異步操作的終極方案 async ,其他的方法和案例都只為理解async做鋪墊” > 所謂的“異步”,就是把一個任務分為兩段去執行,先執行第一段,然后轉而執行其他任務,等第一段任務執行好之后再回頭執行第二段,之后再去執行其他任務。舉個例子: > 小明每天下班回家,先點外賣,再打開洗衣機洗衣服,然后外賣到了先吃飯,吃完飯去晾衣服。 > 上面的例子就是一個異步,如果將上面的異步轉為同步,流程如下: > 小明每天下班回家,先點外賣,等待外賣到了之后吃飯,然后打開洗衣機洗衣服,然后等洗衣機洗好衣服后晾衣服。 > 上面兩種例子闡述了異步與同步的概念,異步就是執行沒個任務都不需要等待滿足某個特定條件,而同步,則需要在某個事情完整的執行完成后才能執行下一個事情 > 所謂“回調函數”,又是何物?回調函數就是把異步任務的第二段,單獨寫入一個函數,等到重新執行該任務時直接調用這個函數。 #### Promise > 回調函數本身沒有問題,只是在使用過程中由于業務邏輯變的復雜,回調函數通常都是很多個嵌套在一起,亂成一團,很難管理,這種情況稱為“回調地獄”(callback hell),如: ~~~ fs.readfile(a,function(err,data){ fs.readfile(b,function(err,data){ ..... }) }) ~~~ > Promise就是為了解決這種問題而生,它不是一種新語法,只是一種新寫法,能將橫向價值的回調函數改寫為縱向加載,如: ~~~ fs.readfile(file) .then(function(data){ console.log(data); }) .then(function(data){ console.log(data); }) .catch(function(err){ console.log(err); }); ~~~ > Promise提供了then方法加載回調函數,catch方法捕捉執行過程中拋出的錯誤,在使用Promise后,每段任務看的更清楚了,而最大的問題就是隨著業務邏輯的增加代碼變的臃腫了,一眼看去全是then,那么有沒有其他方法呢? #### Generator > Generator是ES6中實現的一個協程,最大的特點就是可以暫停函數執行
                  <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>

                              哎呀哎呀视频在线观看