Download the PHP package muqsit/asynciterator without Composer
On this page you can find all versions of the php package muqsit/asynciterator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download muqsit/asynciterator
More information about muqsit/asynciterator
Files in muqsit/asynciterator
Package asynciterator
Short Description A virion that simplifies writing tasks that traverse iterators
License GPL-3.0
Informations about the package asynciterator
AsyncIterator
AsyncIterator
simplifies writing asynchronous iteration tasks, such as for-eaching an iterator.
AsyncIterator::forEach
traverses forward over an Iterator
type and notifies handlers in the order of insertion.
Handlers can be added to a forEach
task by feeding a Closure
to AsyncIterator::forEach()::as()
, having the signature function(TKey $key, TValue $value) : AsyncForeachResult
.
By default, AsyncIterator::forEach
traverses over 10 entries each tick. This can be changed by overriding the default parameter values of the method.
Completion listeners are triggered when a foreach task successfully completes. This is determined by the return value of Iterator::valid()
(i.e., $completed = !Iterator::valid()
) of the iterator that is passed to AsyncIterator::forEach
.
Handlers have the ability to either continue, interrupt or cancel the traversal by returning either AsyncForeachResult::CONTINUE()
, AsyncForeachResult::INTERRUPT()
or AsyncForeachResult::CANCEL()
respectively.
When interrupted, a forEach
task will not traverse the iterator anymore and notify interrupt listeners immediately.
However, when cancelled, a forEach
task will notify no listeners and immediately dispose the task away.
Interruption of a forEach
task can also occur externally (outside the handler) by calling the interrupt()
method on the return value of forEach
.
A forEach
task may be cancelled by calling the cancel()
method on the return value of forEach
, causing no interrupt or completion listeners to be notified.