我试图使用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);
})
})
}
});
答案 0 :(得分:0)
我认为这是因为async
循环中有for
次调用。您在i
函数urlName
中使用async
或app.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
的当前值执行操作。