node-web-mvc
Version:
node spring mvc
40 lines (39 loc) • 1.31 kB
JavaScript
;
/**
* @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;