electron-rpc-async-queue
Version:
Async queue implementation for Electron RPC
33 lines (32 loc) • 1.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const micro_events_1 = __importDefault(require("micro-events"));
const TaskEventType_1 = require("./TaskEventType");
/** Asynchronous task */
class Task extends micro_events_1.default {
/** @constructor */
constructor(body, ...args) {
super();
this.body = body;
this.args = args;
}
/** Run task */
async run() {
let result = null;
let error = null;
this.emit(TaskEventType_1.TaskEventType.START);
try {
result = await this.body(...this.args);
this.emit(TaskEventType_1.TaskEventType.SUCCESS, result);
}
catch (err) {
error = String(err);
this.emit(TaskEventType_1.TaskEventType.ERROR, error);
}
this.emit(TaskEventType_1.TaskEventType.END, error, result);
}
}
exports.Task = Task;