UNPKG

@formily/reactive

Version:

> Web Reactive Library Like Mobx

44 lines 1.55 kB
import { ReactionStack } from './environment'; import { isFn } from './checkers'; import { batchEnd, batchStart, disposeBindingReactions, releaseBindingReactions, } from './reaction'; var Tracker = /** @class */ (function () { function Tracker(scheduler, name) { if (name === void 0) { name = 'TrackerReaction'; } var _this = this; this.track = function (tracker) { if (!isFn(tracker)) return _this.results; if (_this.track._boundary > 0) return; if (ReactionStack.indexOf(_this.track) === -1) { releaseBindingReactions(_this.track); try { batchStart(); ReactionStack.push(_this.track); _this.results = tracker(); } finally { ReactionStack.pop(); _this.track._boundary++; batchEnd(); _this.track._boundary = 0; } } return _this.results; }; this.dispose = function () { disposeBindingReactions(_this.track); }; this.track._scheduler = function (callback) { if (_this.track._boundary === 0) _this.dispose(); if (isFn(callback)) scheduler(callback); }; this.track._name = name; this.track._boundary = 0; } return Tracker; }()); export { Tracker }; //# sourceMappingURL=tracker.js.map