全てがObservableになる
1631 ワード
『javascriptパターン』という書籍にobserverパターンが載っていたけど、書籍の例ではイベント発行する側とサブスクライバの結合度が高かった。
なので結合度なしで実装してみた。(どのイベントを購読するかは指定する必要ある)
ソースコードはこちら。
https://github.com/0xfffffff7/ObserverJS
やることは二つだけで、
Observable.toObservable(対象の何か) // observerに昇格させる。
対象の何か.subscribe(func(), "受け取りたいイベント名") //コールバックを指定する。
イメージ
サンプル
<script type="text/javascript" src="Observer.js"></script>
// とあるオブジェクト.
var SomeObject = {
SomeObjectEventFunc: function(arg1, arg2){};
};
// イベントを受け取りたい人.
var YourReceiver = {
CallbackFunc: function(){
console.log(arguments);
}
};
// とあるオブジェクトをオブザーバーへ昇格させる.
Observable.toObservable(SomeObject);
// イベントを購読する.
SomeObject.subscribe(YourReceiver.CallbackFunc, 'SomeObjectEventFunc');
// イベント発火.
SomeObject.SomeObjectEventFunc(arg1, arg2);
<script type="text/javascript" src="Observer.js"></script>
// とあるオブジェクト.
var SomeObject = {
SomeObjectEventFunc: function(arg1, arg2){};
};
// イベントを受け取りたい人.
var YourReceiver = {
CallbackFunc: function(){
console.log(arguments);
}
};
// とあるオブジェクトをオブザーバーへ昇格させる.
Observable.toObservable(SomeObject);
// イベントを購読する.
SomeObject.subscribe(YourReceiver.CallbackFunc, 'SomeObjectEventFunc');
// イベント発火.
SomeObject.SomeObjectEventFunc(arg1, arg2);
コールバックメソッドの引数にはイベントメソッド名、その引数、結果が渡される。
console output -> ["SomeObjectEventFunc", Arguments[2], "RESULT_OBJECT"]
Author And Source
この問題について(全てがObservableになる), 我々は、より多くの情報をここで見つけました https://qiita.com/0xfffffff7/items/ed65dfb8bf6b09af9052著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .