<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 功能強大 支持多語言、二開方便! 廣告
                ## 前言 本文節選樸靈《深入淺出的nodejs》第四章異步編程,整理加分析而得。 ## 異步編程難點 ### 1 異常處理 我們通常用try catch進行異常捕獲,但是異步編程包括兩個階段,提交請求和處理,而方法通常在請求后立即返回,但是異常可能發生在處理階段,這時的捕獲異常沒有作用。所以常規建議如下: Node約定一般在回調函數中將異常作為第一個實參返回,如果為空值,代表沒有異常拋出。 在編寫異步方法時,只要將異常傳遞給回調方法即可,不用過多處理。 ### 2 函數嵌套過深 在node中,存在很多事務互相依賴的關系,所以每個依賴都要寫到其內部的回調函數中。 ### 3 阻塞代碼 Js中沒有休眠的線程,要進行延時的操作只能用定期函數,但這樣會持續占用內存。 ### 4 多線程編程 一般認為js是單線程進行的代碼,但是nodejs是可以運用webworkers更好的利用多核多線程來操作提升體驗的。 ### 5異步轉同步 目前node大部分都是異步的邏輯,偶爾出現的同步需求比較難操作。 ## 解決方案 ### 事件發布訂閱機制 事件監聽模式是回調函數的事件化,又稱發布訂閱模式。node自身的event模塊就是這個模式的一個簡單實現,node中很多模塊都繼承它,它比dom中的事件簡單,不存在冒泡,默認事件等控制事件傳遞的方法。 示例代碼如下: 訂閱 Emitter.on 發布 典型實例http模塊 ### promise,deferred模式 使用事件的方式,執行流程需要被預先設定, ### 流程控制庫
                  <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>

                              哎呀哎呀视频在线观看