使用异步请求多个URL

时间:2015-02-04 18:54:28

标签: javascript node.js asynchronous

我正在使用ExpressJS创建我的第一个节点应用程序,我对如何使用Request和async请求多个url感到困惑。我在下面的代码吐出了以下错误," chart1未定义"。

router.get('/', function(req, res) {
    async.parallel([
    function(next) {
        apiRequestGoesHere(chart1, function(error) {
            request.get('http://203.33.33.44:8080/reports/43?type=0&key=fakekey'),
            next(null, firstData);
        });
    },
    function(next) {
        anotherApiRequest(chart2, function(error) {
            request.get('http://203.33.33.44:8080/reports/42?type=0&key=fakekey'),
            next(null, secondData);
        });
    }], 

    function(err, results, firstData, secondData) {
        // results is [firstData, secondData]
        res.render('index', {
             title: 'Home KP',
             firstData: chart1
        });
    });
});

有人可以向我解释如何定义这些并使其正常工作吗?

1 个答案:

答案 0 :(得分:0)

您的回调未在任何地方定义chart1。也许您想查看results[0]

使用async.parallel,results变量包含所有函数的结果,顺序相同。当您致电next(null, firstData)时,您告诉异步将firstData的值放入results数组,并且由于该函数是第一个,它将进入results[0] (下一个是results[1]等)。