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 | "use strict"; /* * @Author: lijianzhang * @Date: 2018-03-31 21:33:17 * @Last Modified by: lijianzhang * @Last Modified time: 2018-08-29 23:04:37 */ exports.__esModule = true; var observer_1 = require("./observer"); var store_1 = require("./store"); var constant_1 = require("./constant"); function computed(target, key, descriptor) { var computedKey = Symbol(key); var newGet = descriptor.get; function get() { var self = this[constant_1.RAW_KEY] || this; if (!self[computedKey]) { self[computedKey] = { observers: new Set(), preValue: null, newGet: newGet.bind(this), observer: null, isShouldUpdate: false }; } var obj = self[computedKey]; if (store_1["default"].currentObserver) { obj.observers.add(store_1["default"].currentObserver); store_1["default"].currentObserver.bindObservers.add(obj.observers); } if (!obj.observer) { obj.observer = new observer_1["default"](function () { obj.isShouldUpdate = true; if (obj.observers.size === 0) { obj.observer.unSubscribe(); obj.observer = null; } else { store_1["default"].pushQueue(obj.observers); } }, target.constructor.name + "." + key); obj.preValue = obj.observer.collectDep(obj.newGet); obj.isShouldUpdate = false; } else if (obj.isShouldUpdate) { obj.preValue = obj.observer.collectDep(obj.newGet); obj.isShouldUpdate = false; } return obj.preValue; } descriptor.get = get; return descriptor; } exports["default"] = computed; |