deno.land / std@0.91.0 / async / deferred.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.// TODO(ry) It'd be better to make Deferred a class that inherits from// Promise, rather than an interface. This is possible in ES2016, however// typescript produces broken code when targeting ES5 code.// See https://github.com/Microsoft/TypeScript/issues/15202// At the time of writing, the github issue is closed but the problem remains.export interface Deferred<T> extends Promise<T> { resolve(value?: T | PromiseLike<T>): void; // deno-lint-ignore no-explicit-any reject(reason?: any): void;}
/** Creates a Promise with the `reject` and `resolve` functions * placed as methods on the promise object itself. It allows you to do: * * const p = deferred<number>(); * // ... * p.resolve(42); */export function deferred<T>(): Deferred<T> { let methods; const promise = new Promise<T>((resolve, reject): void => { methods = { resolve, reject }; }); return Object.assign(promise, methods) as Deferred<T>;}
std

Version Info

Tagged at
3 years ago

External Dependencies

No external dependencies 🎉