(Specifically, I’m using Backbone Model events)
Can someone help me understand how javascript events work? The following is not working the way I expected and it’s left me confused:
In backbone, I make a change to my model, and immediately afterwards I run some code:
var myVar;
myModel.set('someAttr', true); // Change my model
myVar = executeSomeFunc(); // Now run some code
Then somewhere else in my codebase I listen for the event and handle it (in my case I am wrapping this model with a collection):
myCollection.on('change:someAttr', changeHandler); // Listen for the event
What I’m finding is that myVar = executeSomeFunc() is not executing until all the event handlers on the change:someAttr event are done firing. (I’ve checked by attaching a time consuming event handler onto the event)
Is this expected behavior?
Yes. JavaScript is not multithreaded. When you trigger events, all event handlers are immediately executed.