zoukankan      html  css  js  c++  java
  • nodeschool.io 9

    ~~ JUGGLING ASYNC ~~

    其实就是一个循环,在循环里面输出的顺序,和排列后在外面的顺序不一样,这是为什么呢?

    用第三方async包,直接报错了……

    This problem is the same as the previous problem (HTTP COLLECT) in
    that you need to use `http.get()`. However, this time you will be
    provided with three URLs as the first three command-line arguments.

    You must collect the complete content provided to you by each of the
    URLs and print it to the console (stdout). You don't need to print out
    the length, just the data as a String; one line per URL. The catch is
    that you must print them out in the same order as the URLs are
    provided to you as command-line arguments.

    ----------------------------------------------------------------------
    HINTS:

    Don't expect these three servers to play nicely! They are not going to
    give you complete responses in the order you hope, so you can't
    naively just print the output as you get it because they will be out
    of order.

    You will need to queue the results and keep track of how many of the
    URLs have returned their entire contents. Only once you have them all,
    you can print the data to the console.

    Counting callbacks is one of the fundamental ways of managing async in
    Node. Rather than doing it yourself, you may find it more convenient
    to rely on a third-party library such as http://npm.im/async or
    http://npm.im/after. But for this exercise, try and do it without any
    external helper library.

    ----------------------------------------------------------------------

    jugglingAsync.js

    var bl = require("bl"),
        http = require('http'),
        count = 0,
        result = [];
    
    function printSult(){
        for(var i = 0 ; i < 3 ; i++){
            console.log(result[i]);
        }
    }
    
    function httpGet(index){
        http.get(process.argv[2 + index], function(res) {
        res.pipe(bl(function(err,data){
            if(err) console.log(err);
            result[index] = data.toString();
            count ++ ;
            if(count == 3){
                printSult();
            }
        }));
    });
    }
    
    for(var i = 0 ; i < 3 ; i++){
        httpGet(i);
    }
  • 相关阅读:
    十问5.12汶川大地震
    JZ035数组中的逆序对
    JZ037数字在排序数组中出现的次数
    JZ039平衡二叉树
    JZ033丑数
    JZ040数组中只出现一次的数字
    JZ032把数组排成最小的数
    JZ036两个链表的第一个公共结点
    JZ034第一个只出现一次的字符位置
    JZ031从 1 到 n 整数中 1 出现的次数
  • 原文地址:https://www.cnblogs.com/della/p/3433867.html
Copyright © 2011-2022 走看看