【问题标题】:Dynamically generate url and page content from multiple JSON files using node.js使用 node.js 从多个 JSON 文件动态生成 url 和页面内容
【发布时间】:2014-07-16 14:10:47
【问题描述】:

我试图使用 node.js express 生成多个 url/页面。我在一个 JSON 文件中存储了多个(当前为 10 个,但数量可能会更改)url,并且我还有另外 10 个(必然会更改)JSON 文件,它们分别包含每个 url 的信息。

目前我正在使用 request-json 从本地服务器获取 JSON 文件。但是,我的代码只允许我在循环中创建最后一个 url 及其内容

client.get("url1", function(error, response, body){                
    for (var i=0; i<10; i++){
        var urlName = body.row[i];
        client.get("url2" + urlName, function(error, response, body) {
            app.get('/'+ urlName, function (req, res){ 
                res.send(body);     
            })
        })
    }
});

【问题讨论】:

  • 这是因为for循环中有一个async调用。
  • 我已经添加了一个答案,可能是什么问题。

标签: javascript json node.js loops


【解决方案1】:

我认为这是因为在for 循环中有一个async 调用。您是说在async 函数app.get 中使用iurlName 的当前值。

client.get 完成时,app.get 将被调用。

因此,当它被调用时,您的 for 循环将完成,因此它将以最新值 i/urlName 调用,这将是您的最后一行 i=10。就这样吧。

试试这个:-

var performCurrentOperation = function(i,body){
    var urlName = body.row[i];
    client.get("url2" + urlName, function(error, response, body) {
        app.get('/'+ urlName, function (req, res){ 
            res.send(body);     
        });
    });
}

client.get("url1", function(error, response, body){                
    for (var i=0; i<10; i++){
        performCurrentOperation(i,body);
    }
});

基本上在这里我正在做我已经绑定了一个具有i 值的函数,因此它应该对i 的当前值执行操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2010-11-07
    相关资源
    最近更新 更多