Rx\Operator\CatchErrorOperator::__invoke PHP Method

__invoke() public method

public __invoke ( Rx\ObservableInterface $observable, Rx\ObserverInterface $observer, Rx\SchedulerInterface $scheduler = null ) : Rx\DisposableInterface
$observable Rx\ObservableInterface
$observer Rx\ObserverInterface
$scheduler Rx\SchedulerInterface
return Rx\DisposableInterface
    public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null)
    {
        $isDisposed = false;
        $disposable = new CompositeDisposable();
        $onError = function (\Exception $e) use(&$isDisposed, $observer, $observable, $scheduler, $disposable) {
            if ($isDisposed) {
                return;
            }
            try {
                /** @var Observable $result */
                $result = call_user_func($this->errorSelector, $e, $observable);
                $subscription = $result->subscribe($observer, $scheduler);
                $disposable->add($subscription);
            } catch (\Exception $e) {
                $observer->onError($e);
            }
        };
        $callbackObserver = new CallbackObserver([$observer, "onNext"], $onError, [$observer, "onCompleted"]);
        $subscription = $observable->subscribe($callbackObserver, $scheduler);
        $disposable->add($subscription);
        $disposable->add(new CallbackDisposable(function () use(&$isDisposed) {
            $isDisposed = true;
        }));
        return $disposable;
    }
CatchErrorOperator