23 lines
641 B
JavaScript
23 lines
641 B
JavaScript
(function (root) {
|
|
'use strict';
|
|
|
|
function createSerializedRunner(task) {
|
|
if (typeof task !== 'function') throw new TypeError('task must be a function');
|
|
let pending = Promise.resolve();
|
|
return {
|
|
run(...args) {
|
|
const result = pending.catch(() => {}).then(() => task(...args));
|
|
pending = result;
|
|
return result;
|
|
},
|
|
flush() {
|
|
return pending;
|
|
}
|
|
};
|
|
}
|
|
|
|
const api = { createSerializedRunner };
|
|
if (typeof module !== 'undefined' && module.exports) module.exports = api;
|
|
else if (root) root.SerializedRunner = api;
|
|
})(typeof window !== 'undefined' ? window : this);
|