如何在浏览器中使用.emit()和.on()方法?

时间:2014-10-15 05:38:06

标签: javascript node.js events browser

我正在浏览器中编写游戏,而我正在尝试查找如何在浏览器中使用.emit().on()方法。我无法让它工作,因为我收到.emit()未定义的错误。任何人都可以解释如何让它发挥作用吗?

例如,我正在尝试为我的游戏实现以下API:

var game = new Game();

game.on('start', function(){
  draw_players();
});
game.on('end', function(){
  display_end_game_message();
});
etc.

在游戏功能中,我发布了start

这样的内容
function Game(){
  function connect(){
    emit('start');
  }
}

如何让emit()on()在浏览器中工作?

2 个答案:

答案 0 :(得分:1)

您的问题是emiton是节点库附带的特定于节点的函数,仅在通过Node.js运行您的javascript服务器端时才起作用

如果你想用节点编写你的游戏,你应该试用Browserify来转换你的node.js脚本以在浏览器上运行。

答案 1 :(得分:0)

您可以使用浏览器here中的事件来代替emiton

它们的工作方式相似。只有他们有addEventListener而不是on,还有dispatchEvent而不是emit

对于他们的工作,您将需要创建某种DOM元素

这是您的实现示例

const gameEl = document.createElement('div')
const gameStartEvent = new Event('game-start')

gameEl.addEventListener('game-start', () => {
    draw_players();
})

function Game(){
    function connect(){
        gameEl.dispatchEvent(gameStartEvent);
    }
}