agora-edu-core
Version:
Core APIs for building an online classroom
71 lines (69 loc) • 1.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BatchRecord = void 0;
require("core-js/modules/esnext.map.delete-all.js");
require("core-js/modules/esnext.map.every.js");
require("core-js/modules/esnext.map.filter.js");
require("core-js/modules/esnext.map.find.js");
require("core-js/modules/esnext.map.find-key.js");
require("core-js/modules/esnext.map.includes.js");
require("core-js/modules/esnext.map.key-of.js");
require("core-js/modules/esnext.map.map-keys.js");
require("core-js/modules/esnext.map.map-values.js");
require("core-js/modules/esnext.map.merge.js");
require("core-js/modules/esnext.map.reduce.js");
require("core-js/modules/esnext.map.some.js");
require("core-js/modules/esnext.map.update.js");
var _BatchRecord;
/**
* 此类主要处理将多个数据包中的同一批变更合并到一起,合并完成后执行callback
*
*/
/** @en
*
*/
class BatchRecord {
static getBatchRecord(batchId) {
if (!this._batchRecords.has(batchId)) {
this._batchRecords.set(batchId, new BatchRecord(batchId));
}
const batchRecord = this._batchRecords.get(batchId);
return batchRecord;
}
constructor(_batchId, _total = 0, _current = 0, _cb = dataChunk => {}) {
this._batchId = _batchId;
this._total = _total;
this._current = _current;
this._cb = _cb;
this._dataChunk = [];
}
addChunk(data) {
this._dataChunk.push(data);
return this;
}
setCallback(cb) {
this._cb = cb;
return this;
}
setTotal(total) {
this._total = total;
return this;
}
setCurrent(current) {
this._current = current;
return this;
}
execute() {
if (this._total === this._current) {
BatchRecord._batchRecords.delete(this._batchId);
if (this._cb) {
this._cb.apply(this, [this._dataChunk]);
}
}
}
}
exports.BatchRecord = BatchRecord;
_BatchRecord = BatchRecord;
BatchRecord._batchRecords = new Map();