【问题标题】:LearnYouNode - Juggling AsyncLearnYouNode - 杂耍异步
【发布时间】:2015-10-19 17:56:23
【问题描述】:

我阅读了一些相同的教程问题,但我仍然无法理解。

我用下面的代码做对了

<code>
var httpModule = require('http');
var blModule = require('bl');
var arguments = process.argv;
var urls = [ arguments[2], arguments[3], arguments[4] ];
var results = [];
var count =0;
urls.forEach(
    function(url , i)
    {       
        var printResponse = function (response)
        {   

                response.pipe(
                blModule(
                    function(err, data)
                    {
                        count++;
                        if(err)
                        return console.log(err);

                        results[i] = data.toString();
                            //if(results.length===3)
                            if(count===3)
                            {
                            for( var c=0; c < results.length; c++)
                            console.log(results[c]);
                            }

                    }
                )
            );

        }

        httpModule.get(url, printResponse);

    }
);

</code>

我不明白的部分是 if(count===3) ,我知道通过检查 if count == 3,我可以确定回调函数被全部调用。 最初我使用 if(results.length === 3) 因为我认为这意味着我现在有了所有结果,但它失败了,谁能解释一下?

谢谢

【问题讨论】:

    标签: javascript node.js asynchronous


    【解决方案1】:

    它只是一个 JS 的东西..

    j = [] // j.length = 0
    j[2] = 0 // now the j.length = 3 *magic*
    

    据我所知,您的第三个请求是最快的:P

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 2015-10-28
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多