https://github.com/plugfox/plugfox_transformers
Сontains a set of useful stream transformers
https://github.com/plugfox/plugfox_transformers
dart dart-library dart-package dart-web dart2 dartlang package stream transformer
Last synced: 7 months ago
JSON representation
Сontains a set of useful stream transformers
- Host: GitHub
- URL: https://github.com/plugfox/plugfox_transformers
- Owner: PlugFox
- License: mit
- Archived: true
- Created: 2020-04-20T07:46:07.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-04-24T23:19:17.000Z (about 6 years ago)
- Last Synced: 2025-01-01T10:03:59.055Z (over 1 year ago)
- Topics: dart, dart-library, dart-package, dart-web, dart2, dartlang, package, stream, transformer
- Language: Dart
- Homepage: https://pub.dev/packages/plugfox_transformers
- Size: 17.6 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# plugfox_transformers
[](https://t.me/PlugFox)
[](https://pub.dartlang.org/packages/plugfox_transformers)
## About
Сontains a set of useful stream transformers
+ `Simultaneous` (Serves for simultaneous parallel tasks)
## Simultaneous
Serves for simultaneous parallel tasks
Executes simultaneously `[maxNumberOfProcesses]` generators `[convert]`
transforming each `[Event]` into a Stream of `[State]`.
The resulting stream is returned from the `[Stream.transform]` method.
If `[maxNumberOfProcesses]` is set to 0 or less, then all
incoming events processed instantly.
If `[maxNumberOfProcesses]` is set to 1, then the
behavior is almost identical .asyncExpand method.
If `[maxNumberOfProcesses]` is set to 2 or more, then this sets the number
simultaneously performed tasks and each subsequent event begins to be processed
as soon as one of the previous ones is finished.
The transformer breaks the sequence of events in the stream.
### Example usage:
```dart
Stream myGenerator(int event) async* {
String state;
state = await Future.delayed(
const Duration(milliseconds: 250)
, () => '$event + 2 = ${event + 2}');
yield state;
state = await Future.delayed(
const Duration(milliseconds: 500)
, () => '$event * 2 = ${event * 2}');
yield state;
state = await Future.delayed(
const Duration(milliseconds: 750)
, () => '$event ^ 2 = ${event * event}');
yield state;
}
Stream.fromIterable(const [1, 2, 3, 4, 5, 6, 7])
.transform(Simultaneous(myGenerator, maxNumberOfProcesses: 2))
.forEach(print);
```
### Override `bloc` package behavior:
```dart
@override
Stream> transformEvents(
Stream events,
Stream> Function(Event) next) =>
events.transform>(
Simultaneous>(next, maxNumberOfProcesses: 0)
);
```
## Changelog
Refer to the [Changelog](https://github.com/plugfox/plugfox_transformers/blob/master/CHANGELOG.md) to get all release notes.