enum AsyncThrowingStream.Continuation.BufferingPolicy
struct AsyncThrowingStream.Continuation
Availability
Technology
init(_ elementType: Element.Type = Element.self, bufferingPolicy limit: AsyncThrowingStream
<Element, Failure>.Continuation
.BufferingPolicy
= .unbounded, _ build: (AsyncThrowingStream
<Element, Failure>.Continuation
) -> Void
) where Failure == Error
elementType
The type of element the Async
produces.
limit
The maximum number of elements to hold in the buffer. By default, this value is unlimited. Use a Continuation
to buffer a specified number of oldest or newest elements.
build
A custom closure that yields values to the Async
. This closure receives an Async
instance that it uses to provide elements to the stream and terminate the stream when finished.
The Async
received by the build
closure is appopriate for use in concurrent contexts. It is thread safe to send and finish; all calls are to the continuation are serialized. However, calling this from multiple concurrent contexts could result in out-of-order delivery.
The following example shows an Async
created with this initializer that produces 100 random numbers on a one-second interval, calling yield(_:)
to deliver each element to the awaiting call point. When the for
loop exits and the stream finishes by calling the continuation’s finish()
method. If the random number is divisble by 5 with no remainder, the stream throws a My
.
enum AsyncThrowingStream.Continuation.BufferingPolicy
struct AsyncThrowingStream.Continuation