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

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

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)
    {
        $isOpen = false;
        $otherDisposable = new EmptyDisposable();
        /** @var DisposableInterface $otherDisposable */
        $otherDisposable = $this->other->subscribe(new CallbackObserver(function ($x) use(&$isOpen, &$otherDisposable) {
            $isOpen = true;
            $otherDisposable->dispose();
        }, function ($e) use($observer) {
            $observer->onError($e);
        }, function () use(&$otherDisposable) {
            $otherDisposable->dispose();
        }), $scheduler);
        $sourceDisposable = $observable->subscribe(new CallbackObserver(function ($x) use($observer, &$isOpen) {
            if ($isOpen) {
                $observer->onNext($x);
            }
        }, function ($e) use($observer) {
            $observer->onError($e);
        }, function () use($observer, &$isOpen) {
            if ($isOpen) {
                $observer->onCompleted();
            }
        }), $scheduler);
        return new CompositeDisposable([$otherDisposable, $sourceDisposable]);
    }
SkipUntilOperator