forked from microsoft/TypeScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharrayFromAsync.js
More file actions
82 lines (73 loc) · 2.52 KB
/
arrayFromAsync.js
File metadata and controls
82 lines (73 loc) · 2.52 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//// [tests/cases/compiler/arrayFromAsync.ts] ////
//// [arrayFromAsync.ts]
export { };
async function * asyncGen (n) {
for (let i = 0; i < n; i++)
yield i * 2;
}
function * genPromises (n) {
for (let i = 0; i < n; i++) {
yield Promise.resolve(i * 2);
}
}
const arrLike = {
0: Promise.resolve(0),
1: Promise.resolve(2),
2: Promise.resolve(4),
3: Promise.resolve(6),
length: 4,
}
const arr : number[] = [];
for await (const v of asyncGen(4)) {
arr.push(v);
}
const sameArr1 = await Array.fromAsync(arrLike);
const sameArr2 = await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]);
const sameArr3 = await Array.fromAsync(genPromises(4));
const sameArr4 = await Array.fromAsync(asyncGen(4));
function Data (n) {}
Data.fromAsync = Array.fromAsync;
const sameArr5 = await Data.fromAsync(asyncGen(4));
const mapArr1 = await Array.fromAsync(asyncGen(4), v => v ** 2);
const mapArr2 = await Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2));
const mapArr3 = await Array.fromAsync([0,2,4,6], v => v ** 2);
const err = new Error;
const badIterable = { [Symbol.iterator] () { throw err; } };
// This returns a promise that will reject with `err`.
const badArray = await Array.fromAsync(badIterable);
//// [arrayFromAsync.js]
async function* asyncGen(n) {
for (let i = 0; i < n; i++)
yield i * 2;
}
function* genPromises(n) {
for (let i = 0; i < n; i++) {
yield Promise.resolve(i * 2);
}
}
const arrLike = {
0: Promise.resolve(0),
1: Promise.resolve(2),
2: Promise.resolve(4),
3: Promise.resolve(6),
length: 4,
};
const arr = [];
for await (const v of asyncGen(4)) {
arr.push(v);
}
const sameArr1 = await Array.fromAsync(arrLike);
const sameArr2 = await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]);
const sameArr3 = await Array.fromAsync(genPromises(4));
const sameArr4 = await Array.fromAsync(asyncGen(4));
function Data(n) { }
Data.fromAsync = Array.fromAsync;
const sameArr5 = await Data.fromAsync(asyncGen(4));
const mapArr1 = await Array.fromAsync(asyncGen(4), v => v ** 2);
const mapArr2 = await Array.fromAsync([0, 2, 4, 6], v => Promise.resolve(v ** 2));
const mapArr3 = await Array.fromAsync([0, 2, 4, 6], v => v ** 2);
const err = new Error;
const badIterable = { [Symbol.iterator]() { throw err; } };
// This returns a promise that will reject with `err`.
const badArray = await Array.fromAsync(badIterable);
export {};