diff options
author | crowlKats <13135287+crowlKats@users.noreply.github.com> | 2020-11-26 17:22:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-26 17:22:36 +0100 |
commit | e6685f0f01b8a11a5eaff020f5babcfde76b3038 (patch) | |
tree | 6c6850bf7bc253f29aec97e2d221f87a2da53c50 /cli/tests/workers_round_robin_bench.ts | |
parent | 2031418a24e6df65a600349db940a555b1220088 (diff) |
refactor(cli/tests): replace createResolvable with deferred (#8507)
Diffstat (limited to 'cli/tests/workers_round_robin_bench.ts')
-rw-r--r-- | cli/tests/workers_round_robin_bench.ts | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/cli/tests/workers_round_robin_bench.ts b/cli/tests/workers_round_robin_bench.ts index 2edb92b8c..8467480b8 100644 --- a/cli/tests/workers_round_robin_bench.ts +++ b/cli/tests/workers_round_robin_bench.ts @@ -5,26 +5,10 @@ const data = "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n"; const workerCount = 4; const cmdsPerWorker = 400; -export interface ResolvableMethods<T> { - resolve: (value: T | PromiseLike<T>) => void; - // deno-lint-ignore no-explicit-any - reject: (reason?: any) => void; -} - -export type Resolvable<T> = Promise<T> & ResolvableMethods<T>; - -export function createResolvable<T = void>(): Resolvable<T> { - let methods: ResolvableMethods<T>; - const promise = new Promise<T>((resolve, reject): void => { - methods = { resolve, reject }; - }); - // TypeScript doesn't know that the Promise callback occurs synchronously - // therefore use of not null assertion (`!`) - return Object.assign(promise, methods!) as Resolvable<T>; -} +import { Deferred, deferred } from "../../std/async/deferred.ts"; function handleAsyncMsgFromWorker( - promiseTable: Map<number, Resolvable<string>>, + promiseTable: Map<number, Deferred<string>>, msg: { cmdId: number; data: string }, ): void { const promise = promiseTable.get(msg.cmdId); @@ -35,13 +19,13 @@ function handleAsyncMsgFromWorker( } async function main(): Promise<void> { - const workers: Array<[Map<number, Resolvable<string>>, Worker]> = []; + const workers: Array<[Map<number, Deferred<string>>, Worker]> = []; for (let i = 1; i <= workerCount; ++i) { const worker = new Worker( new URL("subdir/bench_worker.ts", import.meta.url).href, { type: "module" }, ); - const promise = createResolvable(); + const promise = deferred(); worker.onmessage = (e): void => { if (e.data.cmdId === 0) promise.resolve(); }; @@ -58,7 +42,7 @@ async function main(): Promise<void> { for (const cmdId of Array(cmdsPerWorker).keys()) { const promises: Array<Promise<string>> = []; for (const [promiseTable, worker] of workers) { - const promise = createResolvable<string>(); + const promise = deferred<string>(); promiseTable.set(cmdId, promise); worker.postMessage({ cmdId: cmdId, action: 1, data }); promises.push(promise); @@ -68,7 +52,7 @@ async function main(): Promise<void> { } } for (const [, worker] of workers) { - const promise = createResolvable(); + const promise = deferred(); worker.onmessage = (e): void => { if (e.data.cmdId === 3) promise.resolve(); }; |