首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#9挑战-学习你的节点(异步回调)

#9挑战-学习你的节点(异步回调)
EN

Stack Overflow用户
提问于 2016-07-22 18:04:29
回答 1查看 90关注 0票数 1

我正在努力应对这个特殊的挑战:

练习9-杂耍异步

您必须收集每个URL提供给您的完整内容,并将其打印到控制台(stdout)。您不需要打印长度,只需将数据打印为字符串;每个URL只需一行。问题是,您必须按照URL作为命令行参数提供给您的相同顺序打印出来。

这是我的密码:

代码语言:javascript
复制
var http = require('http');
var bl = require('bl')
var results = [];
var count = 0

function getURLs() {
  var urls = []
  for(var i = 2; i < process.argv.length; i++){
    urls.push(process.argv[i]);
  }
  return urls
}

function getHTTP(url){
  http.get(url, function(response){
    response.pipe(bl(function(err,data){
      if(err){return console.error(err)}
      results[count] = data.toString();
      count ++;
      if (count === process.argv.length - 2){
        printAll()
      }
    }))
  })
}

function printAll(){
  for(var i = 0 ; i < results.length; i++){
    console.log(results[i])
  }
}

function start(){
  retrivedURL = getURLs()
  for(var i = 0; i < retrivedURL.length; i++){
    getHTTP(retrivedURL[i])
  }
}

start()

我似乎找不出错误的地方--它是按照检索到的URL的顺序输出的。

EN

回答 1

Stack Overflow用户

发布于 2016-07-22 19:32:47

为此,您可以使用async.eachSeries,即使这个URL调用异步。这是很好的解释这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38532785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档