mirror of
https://github.com/denoland/deno.git
synced 2024-12-23 15:49:44 -05:00
feat: enable Array.fromAsync (#21048)
This commit is contained in:
parent
24c3c96958
commit
ab72019a17
4 changed files with 34 additions and 1 deletions
|
@ -368,7 +368,8 @@ pub fn main() {
|
|||
// Using same default as VSCode:
|
||||
// https://github.com/microsoft/vscode/blob/48d4ba271686e8072fc6674137415bc80d936bc7/extensions/typescript-language-features/src/configuration/configuration.ts#L213-L214
|
||||
DenoSubcommand::Lsp => vec!["--max-old-space-size=3072".to_string()],
|
||||
_ => vec![],
|
||||
// TODO(bartlomieju): upstream this to `deno_core` crate
|
||||
_ => vec!["--harmony-array-from-async".to_string()],
|
||||
};
|
||||
init_v8_flags(&default_v8_flags, &flags.v8_flags, get_v8_flags_from_env());
|
||||
deno_core::JsRuntime::init_platform(None);
|
||||
|
|
|
@ -500,6 +500,7 @@ Deno.test(function consoleTestStringifyFunctionWithProperties() {
|
|||
[isArray]: [Function: isArray] { [length]: 1, [name]: "isArray" },
|
||||
[from]: [Function: from] { [length]: 1, [name]: "from" },
|
||||
[of]: [Function: of] { [length]: 0, [name]: "of" },
|
||||
[fromAsync]: [Function: fromAsync] { [length]: 1, [name]: "fromAsync" },
|
||||
[Symbol(Symbol.species)]: [Getter]
|
||||
}`,
|
||||
);
|
||||
|
|
|
@ -153,3 +153,20 @@ Deno.test(async function promiseWithResolvers() {
|
|||
await assertRejects(() => promise, Error, "boom!");
|
||||
}
|
||||
});
|
||||
|
||||
Deno.test(async function arrayFromAsync() {
|
||||
// Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fromAsync#examples
|
||||
// Thank you.
|
||||
const asyncIterable = (async function* () {
|
||||
for (let i = 0; i < 5; i++) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 10 * i));
|
||||
yield i;
|
||||
}
|
||||
})();
|
||||
|
||||
const a = await Array.fromAsync(asyncIterable);
|
||||
assertEquals(a, [0, 1, 2, 3, 4]);
|
||||
|
||||
const b = await Array.fromAsync(new Map([[1, 2], [3, 4]]));
|
||||
assertEquals(b, [[1, 2], [3, 4]]);
|
||||
});
|
||||
|
|
14
cli/tsc/dts/lib.esnext.array.d.ts
vendored
14
cli/tsc/dts/lib.esnext.array.d.ts
vendored
|
@ -291,3 +291,17 @@ interface BigUint64Array {
|
|||
|
||||
with(index: number, value: number): BigUint64Array;
|
||||
}
|
||||
|
||||
// NOTE(bartlomieju): taken from https://github.com/microsoft/TypeScript/issues/50803#issuecomment-1249030430
|
||||
// while we wait for these types to officially ship
|
||||
interface ArrayConstructor {
|
||||
fromAsync<T>(
|
||||
iterableOrArrayLike: AsyncIterable<T> | Iterable<T | Promise<T>> | ArrayLike<T | Promise<T>>,
|
||||
): Promise<T[]>;
|
||||
|
||||
fromAsync<T, U>(
|
||||
iterableOrArrayLike: AsyncIterable<T> | Iterable<T> | ArrayLike<T>,
|
||||
mapFn: (value: Awaited<T>) => U,
|
||||
thisArg?: any,
|
||||
): Promise<Awaited<U>[]>;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue