(具体来说,我使用骨干模型事件)Javascript事件处理程序是否阻止?
有人可以帮助我了解javascript事件的工作原理吗?以下是不工作我预期的方式,它给我留下了困惑:
骨干,我进行了更改我的模型,随后马上我运行一些代码:在
var myVar;
myModel.set('someAttr', true); // Change my model
myVar = executeSomeFunc(); // Now run some code
然后别的地方我代码库我监听的事件和处理它(在我的情况,我这个包裹模型的集合):
myCollection.on('change:someAttr', changeHandler); // Listen for the event
什么我发现是myVar = executeSomeFunc()
不执行,直到在change:someAttr
事件的所有事件处理程序完成射击。 (我通过在事件上附加了一个耗时的事件处理程序进行检查)
这是预期的行为吗?
我的理解是,事件处理程序与“触发器”同步运行,但是您可以在事件处理函数中获得正常的语义 - 即 - 它可以在函数调用边界处产生另一个等待事件处理程序 - 调用你的事件处理程序。那是不正确的? – 2012-03-28 00:55:18
哇...不知道为什么,但这只是完全通过我的曲线...我一直认为这东西都是非阻塞的!感谢js 101 – uglymunky 2012-03-28 01:03:39
的教训,至少,jQuery指定处理程序按照它们绑定的顺序执行。那对我意味着没有屈服。我的理解是,基本的JavaScript也是这样工作的 - 绑定事件本质上就是一个接一个地执行的方法队列。真的没有屈服的概念。 – bhamlin 2012-03-28 01:07:00