如何在节点js中发出多个请求

时间:2014-08-05 13:45:13

标签: javascript node.js

我有一个包含4个网址的数组,每个网址都有json数据。如何循环访问网址

例如:    urls = [“http://url1.com”,            “http://url2.com”,“http://url3.com”,“http://url4.com”];

每个网址都有json一个学生信息,如

              { date: 08/05/2014
                 studentname: 'xyz'
                 student marks:[
                              maths:80
                              science:60 
                               ]
              }

现在我想循环浏览所有4个网址,在这种情况下4个学生信息一次获得所有学生标记(意味着所有信息都集成到一个对象中)所以稍后我可以解析并找出哪个学生最高标记或最低标记?如何在node.js中完成?

2 个答案:

答案 0 :(得分:1)

https://github.com/mikeal/request https://github.com/caolan/async#map

var async = require('async');
var request = require('request');

async.map(urls, function(url, callback) {
    request(url, function(err, response, body) {
        callback(err, body);
    })
}, function(err, students){
    if(err) {
        return console.error(err);
    }

    //Do sth. with students array
});

答案 1 :(得分:1)

这可以解决您的问题,请在javascript中使用闭包属性。简单但高效。只是有一个处理请求部分的函数并在循环中调用该函数。并且,其余部分留在函数和闭包属性的词法范围内。

const request = require("request");

function getTheUrl(data) {
    var options = {
        url: "https://jsonplaceholder.typicode.com/posts/" + data
    }
    return options
}

function consoleTheResult(url) {
    request(url, function (err, res, body) {
        console.log(url);
    });
}

for (var i = 0; i < 10; i++) {
    consoleTheResult(getTheUrl(i))
}