UNPKG

deferral.js

Version:

Mange your async task more easy.

23 lines (19 loc) 637 B
const REG_EXECUTOR = /\(\s*resolve\s*,\s*reject[^)]*\)[\s\S]+(resolve|reject)\s*(\([\s\S]*\))*/; const _executor = Symbol('executor'); const _context = Symbol('context'); export default class Task { constructor(executor) { if(REG_EXECUTOR.test(executor.toString())) { this[_executor] = executor; } else { throw TypeError('Task constructor requires a parameter which like a Promise executor.'); } } run(...args) { return new Promise((resolve, reject) => this[_executor].apply(this[_context], [resolve, reject].concat(args))); } bind(context) { this[_context] = context; return this; } }