超出 NodeJS 中的范围对象
Out of Scope Objects in NodeJS
当节点应用程序触发事件时,我正在使用音频播放器包在本地播放声音。 触发事件时,将使用需要按如下方式打开的特定文件调用一个函数:
playSound(fileName);
单独的函数如下所示:
player = new Player('someDirectory/' + fileName + '.mp3');
player.play();
这将打开并开始完美地播放文件,但是当事件快速连续触发时,两种声音将同时播放。 虽然我最初想简单地添加一个:
player.stop();
在"new Player"定义之前,前一个实例显然超出了范围,因为该函数已被第二次调用。 如何在重新开始播放之前停止播放机的所有其他实例?
您需要在外部作用域中声明 player
变量,以便每个函数"看到"同一个玩家。
var player;
function playSound(fileName) {
if (player) {
player.stop();
}
player = new Player(fileName);
player.play();
}
这称为闭包。
您的播放器应该是静态的,只有一个实例应该存在并播放所有声音。
function Podcast() {};
Podcast.FILE_EXTENSION = 'mp3';
Podcast.download = function(podcast) {
console.log('Downloading ' + podcast + ' ...');
};
在这里,我们创建了一个名为 Podcast 的构造函数,其中包含一个名为 FILE_EXTENSION 的静态属性和一个名为 download 的静态方法。
http://elegantcode.com/2011/01/19/basic-javascript-part-7-static-properties-and-methods/
相关文章:
- 如何防止范围对象被更改
- Angularjs 从范围对象获取值
- 需要创建一个函数,将我自己创建的范围对象转换为字符串
- 将Excel.run中的范围对象重新用于办公应用程序
- 如何获取window.getSelection()的范围对象
- 将来自多个控制器的 AngularJS 范围对象合并到一个对象中
- 角度 UI-grid 保存来自不同范围对象的预填充值
- HTML5 媒体时间范围对象
- Angularjs 数学在绑定范围对象上
- AngularJS 自定义指令 - 将属性设置为等于范围对象值
- AngularJS v1.2.x $digest() 无限循环指令隔离范围对象参数
- 超出 NodeJS 中的范围对象
- 如何在传递整个对象的指令中“$parse”范围对象
- 如何从范围对象访问数据到指令
- 单击在另一个范围对象中全选
- 如何从点(X 和 Y 坐标)创建范围对象
- 从构造函数实例化的类范围对象
- 如何在UIWebView中获得选定文本的javascript范围对象
- 如何在ie11中获得范围对象
- 是否可以将范围对象设置为“向后选择”?