OLD | NEW |
1 # Async utilities package | 1 Contains utility classes in the style of `dart:async` to work with asynchronous |
| 2 computations. |
2 | 3 |
3 Contains tools to work with asynchronous computations. | 4 * The [`AsyncCache`][AsyncCache] class allows expensive asynchronous |
| 5 computations values to be cached for a period of time. |
4 | 6 |
5 The package contains `Stream` and `Future` related functionality, | 7 * The [`AsyncMemoizer`][AsyncMemoizer] class makes it easy to only run an |
6 as well as sub-libraries with different utilities. | 8 asynchronous operation once on demand. |
7 | 9 |
8 ### Zipping streams | 10 * The [`CancelableOperation`][CancelableOperation] class defines an operation |
| 11 that can be canceled by its consumer. The producer can then listen for this |
| 12 cancellation and stop producing the future when it's received. It can be |
| 13 created using a [`CancelableCompleter`][CancelableCompleter]. |
9 | 14 |
10 The "stream_zip.dart" sub-library contains functionality | 15 * The delegating wrapper classes allow users to easily add functionality on top |
11 to combine several streams of events into a single stream of tuples of events. | 16 of existing instances of core types from `dart:async`. These include |
| 17 [`DelegatingFuture`][DelegatingFuture], |
| 18 [`DelegatingStream`][DelegatingStream], |
| 19 [`DelegatingStreamSubscription`][DelegatingStreamSubscription], |
| 20 [`DelegatingStreamConsumer`][DelegatingStreamConsumer], |
| 21 [`DelegatingSink`][DelegatingSink], |
| 22 [`DelegatingEventSink`][DelegatingEventSink], and |
| 23 [`DelegatingStreamSink`][DelegatingStreamSink]. |
12 | 24 |
13 ### Results | 25 The delegating classes all have `.typed()` constructors which allow users to |
14 The "result.dart" sub-library introduces a `Result` class that can hold either | 26 cast the generic type parameters in a way that's safe for strong mode. For |
15 a value or an error. | 27 example, if `future` is a `Future<dynamic>` and you know it actually contains
an |
16 It allows capturing an asynchronous computation which can give either a value | 28 `int`, you can write `DelegatingFuture.typed<int>(future)`. |
17 or an error, into an asynchronous computation that always gives a `Result` | |
18 value, where errors can be treated as data. | |
19 It also allows releasing the `Result` back into an asynchronous computation. | |
20 | 29 |
21 ### History. | 30 * The [`FutureGroup`][FutureGroup] class makes it easy to wait until a group of |
22 This package is unrelated to the discontinued `async` package with version 0.1.7
. | 31 features that may change over time completes. |
23 | 32 |
24 ## Features and bugs | 33 * The [`LazyStream`][LazyStream] class allows a stream to be initialized lazily |
| 34 when `.listen()` is first called. |
25 | 35 |
26 Please file feature requests and bugs at the [issue tracker][tracker]. | 36 * The [`NullStreamSink`][NullStreamSink] class is an implementation of |
| 37 `StreamSink` that discards all events. |
27 | 38 |
28 [tracker]: https://github.com/dart-lang/async/issues | 39 * The [`RestartableTimer`][RestartableTimer] class extends `Timer` with a |
| 40 `reset()` method. |
| 41 |
| 42 * The [`Result`][Result] class that can hold either a value or an error. It |
| 43 provides various utilities for converting to and from `Future`s and `Stream`s. |
| 44 |
| 45 * The [`StreamGroup`][StreamGroup] class merges a collection of streams into a |
| 46 single output stream. |
| 47 |
| 48 * The [`StreamQueue`][StreamQueue] class allows a stream to be consumed |
| 49 event-by-event rather than being pushed whichever events as soon as they |
| 50 arrive. |
| 51 |
| 52 * The [`StreamSplitter`][StreamSplitter] class allows a stream to be duplicated |
| 53 into multiple identical streams. |
| 54 |
| 55 * The [`StreamZip`][StreamZip] class combines multiple streams into a single |
| 56 stream of lists of events. |
| 57 |
| 58 * This package contains a number of [`StreamTransformer`][StreamTransformer]s. |
| 59 [`SingleSubscriptionTransformer`][SingleSubscriptionTransformer] converts a |
| 60 broadcast stream to a single-subscription stream, and |
| 61 [`typedStreamTransformer`][typedStreamTransformer] casts the type of a |
| 62 `Stream`. It also defines a transformer type for [`StreamSink`][StreamSink]s, |
| 63 [`StreamSinkTransformer`][StreamSinkTransformer]. |
| 64 |
| 65 * The [`SubscriptionStream`][SubscriptionStream] class wraps a |
| 66 `StreamSubscription` so it can be re-used as a `Stream`. |
| 67 |
| 68 [AsyncCache]: https://www.dartdocs.org/documentation/async/latest/async/AsyncCac
he-class.html |
| 69 [AsyncMemoizer]: https://www.dartdocs.org/documentation/async/latest/async/Async
Memoizer-class.html |
| 70 [CancelableCompleter]: https://www.dartdocs.org/documentation/async/latest/async
/CancelableCompleter-class.html |
| 71 [CancelableOperation]: https://www.dartdocs.org/documentation/async/latest/async
/CancelableOperation-class.html |
| 72 [DelegatingEventSink]: https://www.dartdocs.org/documentation/async/latest/async
/DelegatingEventSink-class.html |
| 73 [DelegatingFuture]: https://www.dartdocs.org/documentation/async/latest/async/De
legatingFuture-class.html |
| 74 [DelegatingSink]: https://www.dartdocs.org/documentation/async/latest/async/Dele
gatingSink-class.html |
| 75 [DelegatingStreamConsumer]: https://www.dartdocs.org/documentation/async/latest/
async/DelegatingStreamConsumer-class.html |
| 76 [DelegatingStreamSink]: https://www.dartdocs.org/documentation/async/latest/asyn
c/DelegatingStreamSink-class.html |
| 77 [DelegatingStreamSubscription]: https://www.dartdocs.org/documentation/async/lat
est/async/DelegatingStreamSubscription-class.html |
| 78 [DelegatingStream]: https://www.dartdocs.org/documentation/async/latest/async/De
legatingStream-class.html |
| 79 [FutureGroup]: https://www.dartdocs.org/documentation/async/latest/async/FutureG
roup-class.html |
| 80 [LazyStream]: https://www.dartdocs.org/documentation/async/latest/async/LazyStre
am-class.html |
| 81 [NullStreamSink]: https://www.dartdocs.org/documentation/async/latest/async/Null
StreamSink-class.html |
| 82 [RestartableTimer]: https://www.dartdocs.org/documentation/async/latest/async/Re
startableTimer-class.html |
| 83 [Result]: https://www.dartdocs.org/documentation/async/latest/async/Result-class
.html |
| 84 [SingleSubscriptionTransformer]: https://www.dartdocs.org/documentation/async/la
test/async/SingleSubscriptionTransformer-class.html |
| 85 [StreamGroup]: https://www.dartdocs.org/documentation/async/latest/async/StreamG
roup-class.html |
| 86 [StreamQueue]: https://www.dartdocs.org/documentation/async/latest/async/StreamQ
ueue-class.html |
| 87 [StreamSinkTransformer]: https://www.dartdocs.org/documentation/async/latest/asy
nc/StreamSinkTransformer-class.html |
| 88 [StreamSink]: https://api.dartlang.org/stable/latest/dart-async/StreamSink-class
.html |
| 89 [StreamSplitter]: https://www.dartdocs.org/documentation/async/latest/async/Stre
amSplitter-class.html |
| 90 [StreamTransformer]: https://api.dartlang.org/stable/latest/dart-async/StreamTra
nsformer-class.html |
| 91 [StreamZip]: https://www.dartdocs.org/documentation/async/latest/async/StreamZip
-class.html |
| 92 [SubscriptionStream]: https://www.dartdocs.org/documentation/async/latest/async/
SubscriptionStream-class.html |
| 93 [typedStreamTransformer]: https://www.dartdocs.org/documentation/async/latest/as
ync/typedStreamTransformer.html |
OLD | NEW |