使用node.js从多个JSON文件动态生成URL和页面内容

时间:2014-07-16 14:10:47

标签: javascript json node.js loops

我试图使用node.js express生成多个url / pages。我有多个(当前10但数字可能会更改)存储在一个JSON文件中的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);     
            })
        })
    }
});

1 个答案:

答案 0 :(得分:0)

我认为这是因为async循环中有for次调用。您在i函数urlName中使用asyncapp.get的当前值。

app.get完成时会调用client.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的当前值执行操作。