私がこれを持っているとしましょう:
view1.listenTo(model, 'change', function(){
console.log('test1');
});
view2.listenTo(model, 'change', function(){
console.log('test2');
});
「test1」が常に最初に印刷されることが保証されていますか?
私がこれを持っているとしましょう:
view1.listenTo(model, 'change', function(){
console.log('test1');
});
view2.listenTo(model, 'change', function(){
console.log('test2');
});
「test1」が常に最初に印刷されることが保証されていますか?
リスナーが別の方法で動作する場合は知りません。確かにbackboneJsコードを読んだところ、listenToがコールバックを配列にプッシュすることがわかりました。イベントがトリガーされると、イベント コールバックを含む配列をループします。
var triggerEvents = function (events, args) {
var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];
switch (args.length) {
case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;
case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;
case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;
case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);
}
};
変わらないと安心できると思います。イベントは常にそのように機能します。イベント (this.model.trigger("change") または this.model.set("...)) が発生すると、定義された順序でコールバックが起動され、コールバックが起動されると、次のイベントで実行が続行されます。モデルチェンジのライン。
現在の実装では、はいと言います。ただし、ドキュメントにはそれが記載されておらず、いつでも変更される可能性があります。