2014-08-27 4 views
3

함수로 파서를 넣어 :xml2js : 나는 내 NodeJS 서버에이 코드를 가지고

function GetXML() { 
    fs.readFile('../slideshow.xml.old', function(err, data) { 
     parser.parseString(data, function (err, result) { 
      var json = JSON.stringify(result); 
      console.log(json); 
      return json; 
     }); 
    }); 
} 

console.log()는 잘 작동하지만이되지 않습니다 : 그것은 매우 논리입니다 undefined 반환

.get('/', function(req, res) { 
    res.end(GetXML()); 
}; 

왜냐하면 함수가 중첩되어 있기 때문입니다 (제 생각에는?). 하지만 GetXML()이 값을 반환하는 방법을 모르겠습니다.

답변

1

: 그것은로 변경 될 수 있습니다. 당신처럼, 당신의 GetXML() 함수에 콜백을 통과해야 :

function GetXML(cb) { 
    fs.readFile('../slideshow.xml.old', function(err, data) { 
    parser.parseString(data, function (err, result) { 
     var json = JSON.stringify(result); 
     cb(json); 
    }); 
    }); 
} 

하고 .get 기능에 제대로 전화 : 당신은 this article에서 살펴 보셔야합니다

.get('/', function(req, res) { 
    GetXML(function (json) { 
    res.end(json); 
    }); 
}; 

의 방법 callbacks 작업을 설명합니다 node.js.

0

"GetXML"이 값을 반환하지 않습니다. 당신이 동기 비동기 작업을 실행하려고하고 있기 때문에 그것은 undefined을 반환하는 것

function GetXML() { 
    return fs.readFile('../slideshow.xml.old', function(err, data) { 
     parser.parseString(data, function (err, result) { 
      var json = JSON.stringify(result); 
      console.log(json); 
      return json; 
     }); 
    }); 
} 
+0

죄송 합니다만 해결책이 작동하지 않습니다. ('console_log (json)'은 작동하지만 함수는 여전히 '정의되지 않음'을 반환합니다. – Flobesst

관련 문제