UNPKG

villa

Version:

Promise utilities for async/await-ready environment.

44 lines 1.34 kB
"use strict"; 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