blear.classes.watcher

数据变化监听类

Usage no npm install needed!

<script type="module">
  import blearClassesWatcher from 'https://cdn.skypack.dev/blear.classes.watcher';
</script>

README

blear.classes.watcher

npm module build status coverage

https://blear.ydr.me/classes/watcher

usage

var data = {a: 1};
var watcher = new Watcher(data);

watcher.watch('a', function(newVal, oldVal, signal) {
    // ....
});

API

#watch(expOrFn, listener): unwatch()

流程

  • 一个 data 的一个 key 关联一个 wire
  • data 层级之前使用 linker 来关联
  • 一个 wire 关联多个 terminal
data => wire => terminal

{ --> linker --> wire --> [terminal1, ...]
    obj: --> wire --> [terminal1, ...]
        { --> linker --> wire --> [terminal1, ...]
            a: --> wire --> [terminal1, ...]
            b: --> wire --> [terminal1, ...]
        }
        
    arr: --> wire --> [terminal1, ...]
        [ --> linker --> wire --> [terminal1, ...]
           1,
           2
        ]
}
  • 其中 terminal 需要继承 Watcher.Terminal 实现
  • 一个 terminal 可能与多个 wire 有关联
  • terminal 需要实现 .link 方法,用来与 wire 进行关联
  • terminal 需要实现 .pipe 方法,用来与 wire 信号传输
  • terminal 如果不需要关联,则需要主动调用 wire.unlink(terminal) 切断关联