(具體來說,我使用骨幹模型事件)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