我正在处理node.js脚本,我无法在函数外部调用变量。 File.name在engine.on ready函数内完美地工作,但在engine.on idle函数中不起作用。
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成为可在所有函数中使用的全局变量?
答案 0 :(得分:0)
请使用:
global['fileName'] = file.name;
或将整个文件设置为globaly:
global['file'] = file;
答案 1 :(得分:0)
变量文件在forEach循环中调用的函数中定义,它引用单个文件。我想你想要做的是循环浏览引擎空闲时下载的文件。您可能还需要添加一些标记或保留已打印文件的索引,并仅打印自最近空闲以来下载的文件。但是,这是一个示例,您可以输出引擎空闲时已下载的所有文件。
<label ng-click="confirmChange($event)"><input type="radio" ng-model="value" value="foo" ></label>
$scope.confirmChange = function(event) {
if(!confirm('sure?')) {
event.preventDefault();
}
};
答案 2 :(得分:0)
在ready
函数中,您在每个文件上进行迭代,而在idle
中,您尝试只访问一个文件,这似乎是导致错误的原因。我认为正确的不是只访问一个,而是访问所有文件。看起来应该是这样的:
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);
}
});
答案 3 :(得分:-1)
您的engine.on('idle', function () {
函数无法访问file
对象,因为file
对象仅存在于forEach
循环内。您需要查看传递给engine.on('idle')
的参数,以查看可用的参数。