2017-02-09 5 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 Я использую узел express moule .. заранее.

ответ

0

Лучшим вариантом является использование ключевого слова return. Это немедленно завершает функцию и выдает имя переменной справа от нее. Если вам нужно больше одной переменной, возвращайте массив.

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

его не работает братан я получаю неопределенную ошибку .... –

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; выполнен после конец первого закрытия.

Так что если вы хотите отправить ответ, вы должны поместить код непосредственно после var videoTitle=res.file;