villa
Version:
Promise utilities for async/await-ready environment.
44 lines • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const _1 = require(".");
let lockObjectToPromiseMapping = new Map();
function _lock(object, handler) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
try {
yield lockObjectToPromiseMapping.get(object);
}
catch (error) { }
return handler();
});
}
/**
* A simple asynchronous lock that helps queueing operations.
*/
function lock(object, handler) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
let ret = _lock(object, handler);
lockObjectToPromiseMapping.set(object, ret);
return ret;
});
}
exports.lock = lock;
/**
* Run tasks in parallel, similar to `v.map` but not mean to transform.
*/
function parallel(values, handler, concurrency) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
yield _1.map(values, handler, concurrency);
});
}
exports.parallel = parallel;
/**
* Race tasks and fulfill or reject as soon as one of them fulfills or rejects.
*/
function race(values, transformer) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return Promise.race(values.map(transformer));
});
}
exports.race = race;
//# sourceMappingURL=concurrency.js.map