<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 功能強大 支持多語言、二開方便! 廣告
                ## 要求 這次的問題和之前的問題(HTTP 收集器)很像,也是需要使用到 http.get() 方法。然而,這一次,將有三個 URL 作為前三個命令行參數提供。 需要收集每一個 URL 所返回的完整內容,然后將它們在終端(標準輸出stdout)打印出來。這次不需要打印出這些內容的長度,僅僅是內容本身即可(字符串形式);每個 URL對應的內容為一行。重點是必須按照這些 URL 在參數列表中的順序將相應的內容排列打印出來才算完成。 ## 提示 不要期待這三臺服務器能好好的一起玩耍!他們可能不會把完整的響應的結果按照希望的順序返回,所以不能天真地只是在收到響應后直接打印出來,因為這樣做的話,他們的順序可能會亂掉。 需要去跟蹤到底有多少 URL 完整地返回了他們的內容,然后用一個隊列存儲起來。一旦擁有了所有的結果,才可以把它們打印到終端。 對回調進行計數是處理 Node 中的異步的基礎。比起自己去做,去依賴一個第三方的模塊或者庫會更方便,比如?[async](http://npm.im/async)?或者?[after](http://npm.im/after)。不過,在本次練習中,應該首先嘗試自己去解決,而不是依賴外部的模塊。 ## 代碼 * 方法一 ~~~ var http = require('http'); var result = ['','','']; var isEnd = [false, false, false]; http.get(process.argv[2], function(res){ res.setEncoding('utf8'); res.on('data', function(data){ result[0] += data; }); res.on('end', function(data){ isEnd[0] = true; if(isEnd[0]&&isEnd[1]&&isEnd[2]){ console.log(result[0]); console.log(result[1]); console.log(result[2]); } }); }); http.get(process.argv[3], function(res){ res.setEncoding('utf8'); res.on('data', function(data){ result[1] += data; }); res.on('end', function(data){ isEnd[1] = true; if(isEnd[0]&&isEnd[1]&&isEnd[2]){ console.log(result[0]); console.log(result[1]); console.log(result[2]); } }); }); http.get(process.argv[4], function(res){ res.setEncoding('utf8'); res.on('data', function(data){ result[2] += data; }); res.on('end', function(data){ isEnd[2] = true; if(isEnd[0]&&isEnd[1]&&isEnd[2]){ console.log(result[0]); console.log(result[1]); console.log(result[2]); } }); }); ~~~ * 方法二 ~~~ var http = require('http') var bl = require('bl') var results = [] var count = 0 function printResults () { for (var i = 0; i < 3; i++) console.log(results[i]) } function httpGet (index) { http.get(process.argv[2 + index], function (response) { response.pipe(bl(function (err, data) { if (err) return console.error(err) results[index] = data.toString() count++ if (count == 3) printResults() })) }) } for (var i = 0; i < 3; i++) httpGet(i) ~~~
                  <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>

                              哎呀哎呀视频在线观看