UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

26 lines (25 loc) 751 B
export default class PhasedScheduler { phaseCallbacks = new Map(); phaseOrder = []; constructor(...phaseOrder) { this.phaseOrder = phaseOrder; } add(phase, callback) { if (!this.phaseOrder.includes(phase)) { throw new Error(`unknown phase ${phase}`); } let phaseCallbacks = this.phaseCallbacks.get(phase); if (!phaseCallbacks) { phaseCallbacks = []; this.phaseCallbacks.set(phase, phaseCallbacks); } phaseCallbacks.push(callback); } run() { for (const phaseName of this.phaseOrder) { for (const callback of this.phaseCallbacks.get(phaseName) || []) { callback(); } } } }