UNPKG

tiny-future

Version:

A tiny way to make `Promise` more convenient to use without any dependencies.

1 lines 1.99 kB
{"version":3,"file":"main.cjs","sources":["../src/future.ts"],"sourcesContent":["/**\n * A tiny way to make `Promise` more convenient to use without any dependencies.\n *\n * Create a new Future which wraps a new `Promise`.\n *\n * @example\n * ```ts\n * const future = new Future<number>();\n * asyncFunc(() => {\n * future.resolve(0);\n * });\n * return future.promise;\n * ```\n */\nexport class Future<T> {\n /**\n * Resolve the created Promise.\n */\n readonly resolve!: Parameters<ConstructorParameters<typeof Promise<T>>[0]>[0];\n\n /**\n * Reject the created Promise.\n */\n readonly reject!: Parameters<ConstructorParameters<typeof Promise<T>>[0]>[1];\n\n /**\n * The Promise created by the Future.\n */\n readonly promise: Promise<T>;\n\n constructor() {\n // If the environment supports `Promise.withResolvers`, just use it.\n if (typeof Promise.withResolvers === 'function') {\n const { promise, resolve, reject } = Promise.withResolvers<T>();\n this.promise = promise;\n this.resolve = resolve;\n this.reject = reject;\n } else {\n this.promise = new Promise<T>((resolve, reject) => {\n (this as { resolve: typeof resolve }).resolve = resolve;\n (this as { reject: typeof reject }).reject = reject;\n });\n }\n }\n}"],"names":[],"mappings":";;AAcO,MAAM,MAAA,CAAU;AAAA;AAAA;AAAA;AAAA,EAIV,OAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA;AAAA,EAET,WAAA,GAAc;AAEV,IAAA,IAAI,OAAO,OAAA,CAAQ,aAAA,KAAkB,UAAA,EAAY;AAC7C,MAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,MAAA,EAAO,GAAI,QAAQ,aAAA,EAAiB;AAC9D,MAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,MAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,MAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,IAClB,CAAA,MAAO;AACH,MAAA,IAAA,CAAK,OAAA,GAAU,IAAI,OAAA,CAAW,CAAC,SAAS,MAAA,KAAW;AAC/C,QAAC,KAAqC,OAAA,GAAU,OAAA;AAChD,QAAC,KAAmC,MAAA,GAAS,MAAA;AAAA,MACjD,CAAC,CAAA;AAAA,IACL;AAAA,EACJ;AACJ;;;;"}