如何从函数中带出变量? - 节点

时间:2017-02-09 19:56:19

标签: javascript node.js function variables express

 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

});

这是非常的菜鸟问题,但如何从函数中提取变量? 我无法使用此函数中的此变量值。

仅供参考我使用node express moule .. 提前谢谢。

3 个答案:

答案 0 :(得分:1)

你要求的是不可能的。 dl.getMP3是一种异步方法。这意味着var videoTitle=res.file;在第一次关闭结束后执行

因此,如果您要发送回复,则应将代码直接放在var videoTitle=res.file;

之后

答案 1 :(得分:0)

最佳选择是使用return关键字。这会立即结束该函数并将变量名称带到它的右侧。如果需要多个变量,则返回一个数组。

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

答案 2 :(得分: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!