LoginSignup
12
12

More than 5 years have passed since last update.

全てがObservableになる

Last updated at Posted at 2015-03-31

『javascriptパターン』という書籍にobserverパターンが載っていたけど、書籍の例ではイベント発行する側とサブスクライバの結合度が高かった。
なので結合度なしで実装してみた。(どのイベントを購読するかは指定する必要ある)

ソースコードはこちら。
https://github.com/0xfffffff7/ObserverJS

やることは二つだけで、

Observable.toObservable(対象の何か)  // observerに昇格させる。

対象の何か.subscribe(func(), "受け取りたいイベント名")  //コールバックを指定する。

イメージ

20150310214204.png

サンプル

<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"]
12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12