Rx\Operator\ConcatMapOperator::__invoke PHP Method

__invoke() public method

public __invoke ( Rx\ObservableInterface $observable, Rx\ObserverInterface $observer, Rx\SchedulerInterface $scheduler = null )
$observable Rx\ObservableInterface
$observer Rx\ObserverInterface
$scheduler Rx\SchedulerInterface
    public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null)
    {
        return $observable->mapWithIndex(function ($index, $value) use($observable, $observer) {
            try {
                $result = call_user_func_array($this->selector, [$value, $index, $observable]);
                if (!$result instanceof Observable) {
                    throw new \Exception('concatMap Error:  You must return an Observable from the concatMap selector');
                }
                if ($this->resultSelector) {
                    return $result->mapWithIndex(function ($innerIndex, $innerValue) use($value, $index) {
                        return call_user_func_array($this->resultSelector, [$value, $innerValue, $index, $innerIndex]);
                    });
                }
                return $result;
            } catch (\Exception $e) {
                $observer->onError($e);
            }
        })->concatAll()->subscribe($observer, $scheduler);
    }
ConcatMapOperator