我有三个功能:A,B和C.需要运行B才能工作。 C有时需要在A上运行,但并不总是存在。在函数c的情况下使用事件是否正确?如果没有,那么什么是正确的做法。最后,事件是否明显比标准呼叫更慢/更不可靠?
function a() {
//Do stuff
b();
alert([Var]);
var event = new Event('a');
document.dispatchEvent(event);
}
function b() {
var Var = "a ran";
}
document.addEventListener('a',function c() {
console.log("a ran");
}, false);
答案 0 :(得分:1)
我不记得在哪里,但我已经阅读了一个关于事件驱动编程的有趣比喻 在篮球场上,有多种方法可以保留记分牌 当球穿过戒指时,球可以通过向每个记分牌发送消息来更新所有记分牌 但是,记分板订阅活动会更有趣 这样,球不关心有多少听众,它只需要发出事件。
事件驱动编程是一种选择 您可以在函数c中创建条件,也可以在函数a中创建一个可以调用函数c的条件 我认为这取决于背景;请记住,篮球的故事为您提供了做出自己决定所需的背景。
文件事件在逻辑上会变慢,但我还没有看到任何基准 如果你不让活动听众过度拥挤页面,我不相信这会是一个问题。
答案 1 :(得分:0)
使用事件的缺点是,在基于类的语言(如Swift或Java)中,您会注意到更多的问题,即代码很难遵循。如果只是发送一个事件,则如果代码属于一个大项目,您将无法直接在代码中看到将影响哪些功能。
如果将代码分成不同的文件(如果使用的是框架),那么仅通过查看代码就很难看出触发方法C
的原因。
我个人尝试设计尽可能可读的代码,但这只是我的选择。我会尽量避免发生事件,但是主要使用 Polymer ,这是不可能完成的任务。 :)我们确实试图限制事件仅在它们属于特定功能时才使用它们,例如处理帐户信息,其中事件的名称严格说明事件来自哪个行为(“类”)。