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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                隨著Web2.0的帶來,JavaScript在前端擔任了更多職責,事件也得到了廣泛應用。Node不像Rhino那樣受Java影響很大,而是將前端瀏覽器中應用廣泛的成熟的事件引入后端,配合異步 I/O, 將事件點暴露給業務邏輯。 下面的例子是Ajax異步提交的服務器端處理過程。Node創建一個Web服務器,并偵聽 8080 端口。對于服務器,我們為其綁定了 request 事件,對于請求對象,我們為其綁定了 data 事件和 end 事件: ~~~ const http=require('http'); const querystring = require('querystring'); // 偵聽服務器的request事件 http.createServer((req, res)=>{ var postData=''; req.setEncoding('utf-8'); // 偵聽請求的data事件 req.on('data', (trunk)=>{ postData += trunk; }); // 偵聽請求的 end 事件 req.on('end',()=>{ res.end(postData); }) }).listen(8080); console.log('服務器啟動完成'); ~~~ 相應地,我們在前段為Ajax請求綁定了 success 事件,在發出請求后,只需關心請求成功時執行相應的業務邏輯即可,相關代碼如下: ~~~ $.ajax({ 'url':'/url', 'method':'POST', 'data':{}, 'success':function(data){ //success 事件 } }); ~~~ 相比之下,無論在前端還是后端,事件都是常用的。對于其它語言來說,這種JavaScript的熟悉感是基本不會出現的。 事件的編程方式具有輕量級、松耦合、只關注事務點等優勢,但是在多個異步任務場景下,事件與事件之間各自獨立,如何協作是一個問題。 從前面可以看到,回調函數無處不在。這是因為在JavaScript中,我們將函數作為一等公民,可以將函數作為對象傳遞給方法作為實參進行調用。 與其它的Web后端編程語言相比,Node除了異步和事件外,回調函數是一大特色。縱觀下來,回調函數也是也是最好的接受異步調用返回數據的方式。但這種編程方式對于很多習慣同步思路編程的人來說,也許是十分不習慣的。代碼的編寫順序與執行順序并無關系,這對他們可能造成閱讀上的障礙。在流程控制方面,因為穿插了異步方法和回調函數,與常規的同步方式相比,變得不那么一目了然了。 在轉變為異步編程思維后,通過對業務的劃分和對事件的提煉,在流程控制方面處理業務的復雜度與同步方式實際上是一致的。 關于流程控制和事件協作的方法和技巧,我們將在第4章中進一步探討。
                  <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>

                              哎呀哎呀视频在线观看