2015-04-26 41 views
-1

我在一个node.js脚本上工作,我无法调用函数以外的变量。 File.name完美运行在engine.on ready函数中,但不会在engine.on空闲函数中运行。无法在函数之外调用变量?

engine.on('ready', function() { 
    engine.files.forEach(function (file) { 
    io.emit('chat message', "downloading " + file.name); 
    file.select() 
    }) 

    engine.on('idle', function() { 
    io.emit('chat message',"files '" + file.name + "' downloaded"); 
    }); 
}); 

我该如何让file.name成为一个可以在所有函数中使用的全局变量?

+2

只需使用:'VAR东西= file.name' –

回答

0

在你迭代每一个文件,而在idle您尝试访问只有一个文件的ready功能,这似乎是错误为我的事业。我认为正确的是不访问只有一个,但所有的文件。它应该是这个样子:

engine.on('ready', function() { 
    engine.files.forEach(function (file) { 
    io.emit('chat message', "downloading " + file.name); 
    file.select() 
    } 
}); 

engine.on('idle', function() { 
    engine.files.forEach(function (file) { 
    io.emit('chat message', "files '" + file.name + "' downloaded); 
    } 
}); 
0

只要使用此:

global['fileName'] = file.name; 

或globaly设置你的整个文件:

global['file'] = file; 
-1

engine.on('idle', function() {函数没有访问file对象作为file对象只有你forEach内部存在循环。您需要查看传递给engine.on('idle')的参数以查看可用的参数。

+0

耻辱,这是下跌表决时,它确实是正确的 – alexreardon

0

变量文件在forEach循环中调用的函数中定义,它引用单个文件。我认为你想要做的是循环浏览引擎闲置时下载的文件。您可能还想添加一些标记或保留已打印哪些文件的索引,并只打印自最近闲置以来下载的文件。但是,下面是一个示例,您可以输出引擎空闲时下载的所有文件。

engine.on('ready', function() { 
 
    engine.files.forEach(function (file) { 
 
     io.emit('chat message', "downloading " + file.name); 
 

 
     file.select(); 
 
    }); 
 
    engine.on('idle', function() { 
 
     engine.files.forEach(function (file) { 
 
      io.emit('chat message', "files '" + file.name + "' downloaded"); 
 
     }); 
 
    }); 
 
});