【问题标题】:Request Multiple URL with Async使用异步请求多个 URL
【发布时间】:2015-02-05 04:10:07
【问题描述】:

我正在使用 ExpressJS 创建我的第一个节点应用程序,我对如何使用请求和异步请求多个 url 感到困惑。我在下面的代码吐出以下错误,“chart1 is not defined”。

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
        });
    });
});

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

【问题讨论】:

  • 嗯,这段代码没有定义chart1chart2。它们在哪里定义?我不认为这与 ExpressJS 有任何关系,只是你没有定义变量或者无法从这个上下文中访问它们

标签: javascript node.js asynchronous


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2018-12-16
    • 2012-05-26
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多