2014-06-17 6 views
1

저는 여기에 함수 외부에서 'htmlrows'라는 로컬 변수에 액세스하려고합니다.하지만 node.js로는 쉽지 않은 것 같습니다.node.js의 함수 외부에서 로컬 변수에 액세스하는 방법

var htmlrows; 
query.on('row', function(row) {  
    console.log("%s |%s |%d", row.empid,row.name,row.age); 
    htmlrows += "<tr><td>" + row.empid + "</td><td>" +row.name + "</td><td>" +row.age + "</td></tr>"; 

}); 

console.log("htmlrows outside function"); 
console.log(htmlrows); // console log prints 'undefined'. 

기능 밖에서 'htmlrows'에 액세스하는 방법을 알려주십시오. 많은 사전에

감사

+0

결과가 반환되는 함수 내에서 논리를 적용하지 않는 이유는 무엇입니까? –

+0

빠른 응답을 보내준 Ben. 당신이 말한대로 그것이 가능하지만 접근하고자하는 것은 기능 밖입니다. 기능을 실제로 사용하고 싶다면 어떻게 배우겠습니까? – user3747813

+0

'EventEmitter' 인스턴스에'query' (이것은 전형적입니다) 인'end' 이벤트가 있다고 가정합니다 :'query.on ('row', function (row) {... htmlrows + = "... ")}}. on ('end', function() {console.log (htmlrows);}), ' – zamnuts

답변

2

문제가 너무 console.log(htmlrows); 쿼리 기능이 완료되기 전에 실행되고, 비동기 Node.js를 것입니다.

당신이해야 할 일은 쿼리 기능에서 콜백을 청취하는 별도의 기능입니다.

당신은 그들이 특정 순서대로 실행 얻을 수 있도록, 일련의 체인 비동기 호출에 당신을 수 Node.js를위한 비동기 미들웨어, 사용을 시도 할 수 :

var some_data = null; 
async.series([ 
    function(callback) { 
     //...do a thing 
     function_1(callback); 
    }, 
    function(callback) { 
     //...do another thing 
     function_2(callback); 
    } 
    //...etc 
]); 

function function_1(callback) { 
    some_data = 'value'; 
    console.log('function_1!'); 
    return callback(); 
} 

function function_2(callback) { 
    console.log('function_2: '+some_data); 
    return callback(); 
} 

의 원인이됩니다에서 :

#:~ function_1! 
#:~ function_2: value 
+0

감사합니다.이 방법을 시도해보십시오. – user3747813

관련 문제