2017-02-09 6 views
0
app.get('/:id', function(req , res){ 
    var ID = req.params.id ; 

    //converter... 
    var dl = new Downloader(); 
    var i = 0; 

    dl.getMP3({videoId:req.params.id},function(err,res){ 
     i++; 
     if(err) 
      throw err; 
     else{ 
      console.log("Song "+ i + " was downloaded: " + res.file); 
     } 
      var videoTitle=res.file; 

     }); 

    //i want videoTitle variable right here! 
    //out of the function 

});함수에서 변수를 가져 오는 방법은 무엇입니까? - 노드

이것은 매우 멍청한 질문이지만 함수에서 변수를 꺼내는 방법은 무엇입니까? 이 함수에서이 변수 값을 사용할 수 없습니다.

FYI 나는 노드 익스프레스 moule을 사용하고 있습니다. 미리 감사드립니다.

답변

0

가장 좋은 방법은 return 키워드를 사용하는 것입니다. 이렇게하면 함수가 즉시 끝나고 변수 이름의 오른쪽에 변수 이름이 표시됩니다. 하나 이상의 변수가 필요한 경우 배열을 반환합니다.

function nameAnimal(){ 
    var animal = 'cat'; 
    return animal; 
} 
var animal = nameAnimal(); 
+0

이 아니 작업 형제 var videoTitle=res.file; 내가 정의되지 않은 오류를 받고 있어요 후 .... –

0

범위의 문제라고 생각합니다. 변수를 함수 밖에서 선언하고 함수 내부에서 변수를 설정하면 변수를 사용할 수 있어야합니다.

app.get('/:id', function(req , res){ 
var ID = req.params.id ; 

//converter... 
var dl = new Downloader(); 
var i = 0; 
var videoTitle; 

dl.getMP3({videoId:req.params.id},function(err,res){ 
    i++; 
    if(err) 
     throw err; 
    else{ 
     console.log("Song "+ i + " was downloaded: " + res.file); 
    } 
     videoTitle=res.file; 

    }); 

// videoTitle should be available here! 
+0

여전히 점점 정의되지 않은 오류를 배치해야합니다 .... –

1

당신이 원하는 것은 불가능합니다. dl.getMP3은 비동기 방식입니다. 즉 이후에 이 실행되면 var videoTitle=res.file;이 실행됨을 의미합니다.

그래서 당신은 응답을 보내려면, 당신은 당신의 코드를 직접

관련 문제