mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 17:34:47 -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:
|
// Using same default as VSCode:
|
||||||
// https://github.com/microsoft/vscode/blob/48d4ba271686e8072fc6674137415bc80d936bc7/extensions/typescript-language-features/src/configuration/configuration.ts#L213-L214
|
// 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()],
|
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());
|
init_v8_flags(&default_v8_flags, &flags.v8_flags, get_v8_flags_from_env());
|
||||||
deno_core::JsRuntime::init_platform(None);
|
deno_core::JsRuntime::init_platform(None);
|
||||||
|
|
|
@ -500,6 +500,7 @@ Deno.test(function consoleTestStringifyFunctionWithProperties() {
|
||||||
[isArray]: [Function: isArray] { [length]: 1, [name]: "isArray" },
|
[isArray]: [Function: isArray] { [length]: 1, [name]: "isArray" },
|
||||||
[from]: [Function: from] { [length]: 1, [name]: "from" },
|
[from]: [Function: from] { [length]: 1, [name]: "from" },
|
||||||
[of]: [Function: of] { [length]: 0, [name]: "of" },
|
[of]: [Function: of] { [length]: 0, [name]: "of" },
|
||||||
|
[fromAsync]: [Function: fromAsync] { [length]: 1, [name]: "fromAsync" },
|
||||||
[Symbol(Symbol.species)]: [Getter]
|
[Symbol(Symbol.species)]: [Getter]
|
||||||
}`,
|
}`,
|
||||||
);
|
);
|
||||||
|
|
|
@ -153,3 +153,20 @@ Deno.test(async function promiseWithResolvers() {
|
||||||
await assertRejects(() => promise, Error, "boom!");
|
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;
|
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…
Add table
Reference in a new issue