(handler: (value: R) => unknown)
| 939 | handler: (value: R) => Generator<F, S, unknown> | Effected<F, S> | S, |
| 940 | ): Effected<E | F, S>; |
| 941 | andThen(handler: (value: R) => unknown): Effected<Effect, unknown> { |
| 942 | return effected(() => { |
| 943 | const iterator = this[Symbol.iterator](); |
| 944 | let originalIteratorDone = false; |
| 945 | let appendedIterator: Iterator<Effect, unknown, unknown>; |
| 946 | return { |
| 947 | next: (...args: [] | [R]) => { |
| 948 | if (originalIteratorDone) return appendedIterator.next(...args); |
| 949 | const result = iterator.next(...args); |
| 950 | if (!result.done) return result; |
| 951 | originalIteratorDone = true; |
| 952 | const it = handler(result.value); |
| 953 | if (!(it instanceof Effected) && !isGenerator(it) && !isEffectedIterator(it)) |
| 954 | return { done: true, value: it }; |
| 955 | appendedIterator = Symbol.iterator in it ? it[Symbol.iterator]() : it; |
| 956 | return appendedIterator.next(); |
| 957 | }, |
| 958 | }; |
| 959 | }); |
| 960 | } |
| 961 | |
| 962 | /** |
| 963 | * Tap the return value of the effected program. |
no test coverage detected