2012-03-31 2 views
0

나는 자바 스크립트에 초보자이고 지금은 하나의 작은 것을 필요로한다. 이 코드를자바 스크립트 기능 데이터 처리

http.get(options, function(res) { 
    res.setEncoding('utf-8') 
    res.on('data', function (chunk) { 
     var parser = new xml2js.Parser(); 
     if(chunk.length < 50) { 
      console.log('end!'); 
     } else { 
      console.log(chunk); 
     } 
    }); 
}) 

을하고 난 나머지 코드에서 변수 "덩어리"로 작동해야합니다. 어떻게 기능에서 벗어날 수 있습니까? - stadart return은 물론 여기서 작동하지 않습니다.

답변

3

변수를 포함하는 범위로 설정할 수 있습니다. chunk 인해 AJAX 요청에 비동기 적으로 처리되기 때문에

var ch; 
http.get(options, function(res) { 
    res.setEncoding('utf-8') 

    res.on('data', function (chunk) { 

    var parser = new xml2js.Parser(); 
    if(chunk.length < 50) { 
     ch = chunk; 
    } else { 
     console.log(chunk); 
    } 
}); 

그러나, 당신은 아마 당신의 콜백 내부에서 메소드를 호출하여 프로그램을 계속 더 나을 것입니다.

http.get(options, function(res) { 
    res.setEncoding('utf-8') 

    res.on('data', function (chunk) { 
    var parser = new xml2js.Parser(); 
    if(chunk.length < 50) { 
     doSomethingWithChunk(chunk); 
    } else { 
     console.log(chunk); 
    } 
}); 

function doSomethingWithChunk(chunk) { 
    // rest of code here 
} 

편집 :

(이 권장되지 입니다) nodejs에서 전역 변수를 설정하려면, 당신은 global 개체를 사용할 수 있습니다 : 다시

GLOBAL.chunk = chunk; 

을, 이것은 필요는 없습니다 전역 변수를 사용할 필요가 없도록 코드를 변경하십시오.

+0

그러나 변수 ch는 여전히 함수 콘텐츠에서 사용할 수 없습니다! 나는 그것을 전체 코드에서 사용하고 싶다! – yety

+0

이것은 nodejs btw입니다. – yety

+0

질문에 nodejs를 지정하지 않았습니다. – Jivings