【问题标题】:how make multiple requests in node js如何在节点js中发出多个请求
【发布时间】:2014-08-05 13:45:12
【问题描述】:

我有一个包含 4 个 url 的数组,每个 url 都有 json 数据。如何遍历url

前 :
网址 =[ "http://url1.com", "http://url2.com", "http://url3.com", "http://url4.com"];

每个 url 都有一个 json 学生信息,比如

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

现在我想遍历所有 4 个 url 在这种情况下 4 个学生信息以一次获取所有学生分数(意味着像所有信息到一个对象中的一些东西)所以稍后我可以解析并找出哪个学生得到了最高标记或最低标记?如何在 node.js 中完成?

【问题讨论】:

    标签: javascript node.js


    【解决方案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
    });
    

    【讨论】:

    • 当我尝试使用 for(var i =0; i
    • 然后尝试调试它。可能body仍然是JSON字符串,需要解析。
    • 我试过了 results=JSON.parse(students) ,当尝试打印学生姓名时,console.log(results.studentname);它说意外令牌','但是当我使用单个网址时,它会向我显示名称为什么不适用于网址数组?
    • students 已经是一个数组,没有什么可解析的。试试callback(err, JSON.parse(body));
    【解决方案2】:

    这将解决您的问题,在 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))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      相关资源
      最近更新 更多