使用异步请求多个网址

Request Multiple URL with Async

本文关键字:请求 异步      更新时间:2023-09-26

我正在使用ExpressJS创建我的第一个节点应用程序,我对如何使用请求和异步请求多个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
        });
    });
});

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

您的回调不会在任何地方定义chart1。也许你想检查results[0]

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