UNPKG

node-web-mvc

Version:
40 lines (39 loc) 1.31 kB
"use strict"; /** * @module MapUpdater * @description Map类型数据更新器 */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const AbstractUpdater_1 = __importDefault(require("./AbstractUpdater")); class MapUpdater extends AbstractUpdater_1.default { internalUpdate(ctor, newCtor) { const creatable = typeof newCtor === 'function'; const elements = this.data; // 替换实例 elements.forEach((element, key) => { if (!creatable || !this.needHotFn(element, ctor)) { return; } else if (!creatable) { console.warn(`Hot fail: ${newCtor.name} : No-parameter construction required`); } elements.set(key, this.createInstance(newCtor, element)); }); } cleanUpdate(oldCtor) { const elements = this.data; const removes = []; elements.forEach((element, key) => { if (this.needHotFn(element, oldCtor)) { removes.push(key); } }); removes.forEach((key) => { elements.delete(key); }); } } exports.default = MapUpdater;