1
0

implement awaited sequence

This commit is contained in:
2024-05-17 22:45:28 +02:00
parent 595d9fd5fc
commit e68b80c8eb
2 changed files with 21 additions and 14 deletions

View File

@@ -1,3 +1,5 @@
import { BaseAsyncSequence } from "../async/impl.js";
import { AsyncSequence } from "../async/types.js";
import { Collector } from "../collector/types.js";
import { createEqualityMap } from "../equality-map.js";
import { createEqualitySet } from "../equality-set.js";
@@ -626,6 +628,10 @@ export abstract class BaseSequence<TElement> extends SequenceMarker implements S
return new CacheSequence<TElement>(this);
}
awaited(): AsyncSequence<Awaited<TElement>> {
return new AwaitedSequence<TElement>(this);
}
asArray() {
return this.toArray();
}
@@ -954,9 +960,9 @@ export class DelegatedSequence<TElement> extends SequenceMarker implements Seque
return this.#sequence.cached();
}
// awaited(): AsyncSequence<Awaited<TElement>> {
// return this.#sequence.awaited();
// }
awaited(): AsyncSequence<Awaited<TElement>> {
return this.#sequence.awaited();
}
asArray() {
return this.#sequence.asArray();
@@ -2481,16 +2487,16 @@ class PartitionBySequence<TElement, TBy> extends BaseSequence<TElement[]> {
}
}
// class AwaitedSequence<T> extends BaseAsyncSequence<Awaited<T>> {
// readonly #sequence: Sequence<T>;
class AwaitedSequence<T> extends BaseAsyncSequence<Awaited<T>> {
readonly #sequence: Sequence<T>;
// constructor(sequence: Sequence<T>) {
// super();
constructor(sequence: Sequence<T>) {
super();
// this.#sequence = sequence;
// }
this.#sequence = sequence;
}
// override async *iterator() {
// yield* this.#sequence;
// }
// }
override async *iterator() {
yield* this.#sequence;
}
}

View File

@@ -1,3 +1,4 @@
import { AsyncSequence } from "../async/types.js";
import { Collector } from "../collector/types.js";
import { RandomOptions } from "../random/types.js";
import { Predicate, Converter, FilterPredicate, Equater, BiConverter, Accumulator, Comparer, Action } from "../types.js";
@@ -112,7 +113,7 @@ export interface Sequence<TElement> extends Iterable<TElement> {
cached(): Sequence<TElement>;
// awaited(): AsyncSequence<Awaited<TElement>>;
awaited(): AsyncSequence<Awaited<TElement>>;
asArray(): TElement[];
toArray(): TElement[];