Rx\Operator\TakeWhileOperator::__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)
    {
        $onNext = function ($value) use($observer) {
            try {
                if (call_user_func($this->predicate, $value)) {
                    $observer->onNext($value);
                } else {
                    $observer->onCompleted();
                }
            } catch (\Exception $e) {
                $observer->onError($e);
            }
        };
        $callbackObserver = new CallbackObserver($onNext, [$observer, 'onError'], [$observer, 'onCompleted']);
        return $observable->subscribe($callbackObserver, $scheduler);
    }
TakeWhileOperator