Use object pool in refresh

This commit is contained in:
Daniel Imms
2017-01-04 09:32:23 -08:00
parent 335850380e
commit 2b4c019f13
2 changed files with 96 additions and 28 deletions
+8 -2
View File
@@ -28,7 +28,7 @@ export class DomElementObjectPool {
public acquire(): HTMLElement {
let element: HTMLElement;
if (this._pool.length === 0) {
element = this.createNew();
element = this._createNew();
} else {
element = this._pool.pop();
}
@@ -41,13 +41,19 @@ export class DomElementObjectPool {
throw new Error('Could not release an element not yet acquired');
}
delete this._inUse[element.getAttribute(DomElementObjectPool.OBJECT_ID_ATTRIBUTE)];
this._cleanElement(element);
this._pool.push(element);
}
private createNew(): HTMLElement {
private _createNew(): HTMLElement {
const element = document.createElement(this._type);
const id = DomElementObjectPool._objectCount++;
element.setAttribute(DomElementObjectPool.OBJECT_ID_ATTRIBUTE, id.toString(10));
return element;
}
private _cleanElement(element: HTMLElement): void {
element.className = '';
element.innerHTML = '';
}
}