2017-04-10 99 views
-1

我試圖訪問變量「onlinehub」和「offlinehub」for循環外,但變量只打印初始聲明值。有沒有其他方法可以做到這一點?如何獲取Nodejs中循環外部的變量

app.get('/test', function(req, res) { 
    client.keys('hub*', function (err, keys) { 
    console.log(keys.length); 
    for (var i=0; i<keys.length; i++){ 
    client.hgetall(keys[i], function(err, reply) { 
    if(reply.status == "online"){ 
     onlinehub++; 
    } 
    else if(reply.status == "offline"){ 
     offlinehub++; 
    } 
    }); 
    } 
    // for (var i=0; i<reply.length; i++){ 
    // console.log(reply.id) 
    // } 
    console.log(onlinehub +"-" +offlinehub) 

    }); 
}); 

回答

-1

您可以創建兩個全局變量併爲它們分配一個onlinehub值,並在for循環之外使用它們。

var global_onlinehub=0; 
var global_offlinehub=0; 
app.get('/test', function(req, res) { 
client.keys('hub*', function (err, keys) { 
console.log(keys.length); 

for (var i=0; i<keys.length; i++){ 
client.hgetall(keys[i], function(err, reply) { 
if(reply.status == "online"){ 
global_onlinehub= onlinehub++; 
} 
else if(reply.status == "offline"){ 
    global_offlinehub=offlinehub++; 
} 
}); 
} 
// for (var i=0; i<reply.length; i++){ 
// console.log(reply.id) 
// } 
console.log(global_onlinehub +"-" +global_offlinehub) 

}); 
});