Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | "use strict"; exports.__esModule = true; /* * @Author: lijianzhang * @Date: 2018-08-29 22:41:33 * @Last Modified by: lijianzhang * @Last Modified time: 2018-08-30 01:45:07 */ var store_1 = require("./store"); var id = 0; var Observer = /** @class */ (function () { function Observer(cb, name) { this.bindObservers = new Set(); id += 1; this.id = id; this.callback = cb; this.name = name; } Observer.prototype.collectDep = function (fn) { this.beginCollectDep(); var res = fn(); this.endCollectDep(); return res; }; Observer.prototype.beginCollectDep = function () { this.clearBinds(); store_1["default"].currentObservers.push(this); }; Observer.prototype.endCollectDep = function () { var index = store_1["default"].currentObservers.indexOf(this); store_1["default"].currentObservers.splice(index, 1); }; Observer.prototype.clearBinds = function () { var _this = this; this.bindObservers.forEach(function (observers) { observers["delete"](_this); }); this.bindObservers.clear(); }; Observer.prototype.unSubscribe = function () { this.clearBinds(); this.callback = null; }; Observer.prototype.run = function () { if (this.callback) this.callback(this); }; return Observer; }()); exports["default"] = Observer; function observe(fn, name) { if (name === void 0) { name = 'observe'; } if (!fn) throw new Error('you need set callBack'); var ob = new Observer(function (observer) { observer.collectDep(fn); }, name); ob.run(); return ob; } exports.observe = observe; |