2014-06-16 3 views
0

에 출력되었습니다. 일부 데이터를 분리하는 데 사용하는 grep 함수가 있습니다.Node.js 함수가 변수

문제가 발생했습니다. 데이터를 콘솔에 출력하는 대신 변수에 저장해야합니다.

예를 들어, 여기 내 실제 기능입니다.

function funGrep(cmd,callback,search,args){ 
    exec(cmd,function(err,stdout){ 
     if(!stdout) 
      return; 
     var lines = stdout.toString().split(EOL); 
     var re = new RegExp(search,args); 
     for(var line in lines){ 
      var results = lines[line].match(re); 
      if(results){ 
       for(var i = 0; i < results.length; i++){ 
        callback(results[i]); 
       } 
      } 
     } 
    }); 
} 

여기에 실제 기능을 호출하는 방법이 나와 있습니다.

funGrep("ping -n 3 google.com",console.log,"time=[0-9\.]+ ?ms"); 

출력을 콘솔에 로깅하는 대신, 어떻게 출력과 같은 변수에 할당 할 수 있습니까?

감사합니다.

+0

을 매개 변수를 변수로 사용할 수있는 함수? 문제가 무엇입니까? 당신은 [그것을 단순히 반환 할 수 없습니다] (http://stackoverflow.com/q/23667086/1048572) 물론. – Bergi

+0

그 기능을 콜백으로 전달하십시오. 비동기 적으로 실행되고 있다는 것을 알아 두십시오. – Scimonster

+0

데이터를 콘솔에 기록하는 대신 액세스 할 수 있어야합니다. 실제 기능을 수정하거나 수정하지 않고이를 수행 할 수있는 방법이 있습니까? 내가 노드에 있기 때문에 내가 멍청한 놈처럼 보인다면 나는 apoligize한다. –

답변

0

당신이해야 할 일은 데이터/결과로 당신이 필요로하는 것을 수행하는 콜백 함수를 만드는 것입니다.

function theCallback (data) { 
    ... do whatever you want with your data ... 
} 

다음과 같이이 함수를 인수로 전달합니다.

funGrep("ping -n 3 google.com",theCallback,"time=[0-9\.]+ ?ms"); 
+0

grep이란 무엇입니까? – Yang

0

당신 수 당신은 변수에 데이터를 추가하고 함수가 완료 핸들러 알리기 위해 콜백을 수정하는 콜백 : 대신`console.log` 패스, 그래서

function funGrep(cmd,callback,search,args){ 
    exec(cmd,function(err,stdout){ 
     if(err){ 
      console.log(err); 
      return; 
     } 
     if(!stdout) 
      return; 
     var lines = stdout.toString().split(EOL); 
     var re = new RegExp(search,args); 
     for(var line in lines){ 
      var results = lines[line].match(re); 
      if(results){ 
       for(var i = 0; i < results.length; i++){ 
        callback(results[i],false); 
       } 
      } 
     } 
     callback(null,true); //finsished 
    }); 
} 

var myData = []; 
funGrep("ping -n 3 google.com",function(result,finished){if(!finished) myData.push(result); else goOn();},"time=[0-9\.]+ ms"); 

function goOn(){ 
    //funGrep finished 
    console.log("Result: " + myData); 
} 
관련 문제