Rx\Operator\BufferWithCountOperator::__invoke PHP Метод

__invoke() публичный Метод

public __invoke ( Rx\ObservableInterface $observable, Rx\ObserverInterface $observer, Rx\SchedulerInterface $scheduler = null ) : mixed
$observable Rx\ObservableInterface
$observer Rx\ObserverInterface
$scheduler Rx\SchedulerInterface
Результат mixed
    public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null)
    {
        $currentGroups = [];
        return $observable->subscribe(new CallbackObserver(function ($x) use(&$currentGroups, $observer) {
            if ($this->index % $this->skip === 0) {
                $currentGroups[] = [];
            }
            $this->index++;
            foreach ($currentGroups as $key => &$group) {
                $group[] = $x;
                if (count($group) === $this->count) {
                    $observer->onNext($group);
                    unset($currentGroups[$key]);
                }
            }
        }, function ($err) use($observer) {
            $observer->onError($err);
        }, function () use(&$currentGroups, $observer) {
            foreach ($currentGroups as &$group) {
                $observer->onNext($group);
            }
            $observer->onCompleted();
        }), $scheduler);
    }
BufferWithCountOperator