(具体的には、私はバックボーンモデルイベントを使用しています)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
イベントに関するすべてのイベントハンドラまで実行されていないということです発砲される。 (私は時間のかかるイベントハンドラをイベントに付けることでチェックしました)
これは予想される動作ですか?
私の理解では、イベントハンドラは "トリガ"と同期して動作しますが、イベントハンドラ関数内では通常の意味を持っています。つまり、関数呼び出し境界で別の待機イベントハンドラあなたのイベントハンドラの中で呼び出します。それは間違っていますか? –
うわー...理由は分かりませんが、これはまったく私のカーブを通っています...私はいつも、このものはすべて非ブロックであると仮定してきました! jsのレッスンをありがとう101 – uglymunky
jQueryは、少なくともハンドラがバインドされた順に実行されるように指定しています。それは収穫がないということを私に暗示します。基本的なJavaScriptがこのように機能するのは私の理解であり、拘束力のあるイベントは本質的にただちに実行されるメソッドのキューです。本当に収穫の概念はありません。 – bhamlin