UNPKG

channel-ts

Version:

Channels implemented in Typescript using async/await

39 lines (38 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _1 = require("."); const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); const main = async () => { const mutex = new _1.Mutex(); const task1 = async () => { console.log("task 1: going to start"); const guard = await mutex.acquire(); console.log("task 1: mutex acquired"); await delay(2000); console.log("task 1: finished"); guard.release(); console.log("task 1: mutex released"); }; const task2 = async () => { await delay(200); console.log("task 2: going to start"); const guard = await mutex.acquire(); console.log("task 2: mutex acquired"); await delay(1500); console.log("task 2: finished"); guard.release(); console.log("task 2: mutex released"); }; const task3 = async () => { await delay(400); console.log("task 3: going to start"); const guard = await mutex.acquire(); console.log("task 3: mutex acquired"); await delay(1800); console.log("task 3: finished"); guard.release(); console.log("task 3: mutex released"); }; await Promise.all([task1(), task2(), task3()]); }; main();