Esempio n. 1
0
 /**
  * Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.
  *
  * @param callable $factory
  * @return \Rx\Observable\AnonymousObservable
  */
 public static function toObservable($factory)
 {
     if (!is_callable($factory)) {
         throw new InvalidArgumentException('Factory should be a callable.');
     }
     $observableFactory = function () use($factory) {
         return Promise::toObservable($factory());
     };
     return BaseObservable::defer($observableFactory);
 }
Esempio n. 2
0
 /**
  * Converts a Promise to an Observable sequence
  *
  * @param \React\Promise\PromiseInterface $promise
  * @return \Rx\Observable\AnonymousObservable
  */
 public static function toObservable(PromiseInterface $promise)
 {
     return BaseObservable::defer(function () use($promise) {
         $subject = new AsyncSubject();
         $promise->then(function ($value) use($subject) {
             $subject->onNext($value);
             $subject->onCompleted();
         }, [$subject, "onError"]);
         return $subject;
     });
 }
Esempio n. 3
0
 /**
  * @test
  */
 public function defer_throw()
 {
     $invoked = 0;
     $results = $this->scheduler->startWithCreate(function () use(&$invoked) {
         return BaseObservable::defer(function () use(&$invoked) {
             $invoked++;
             throw new \Exception('error');
         });
     });
     $this->assertMessages([onError(200, new \Exception('error'))], $results->getMessages());
     $this->assertEquals(1, $invoked);
 }
Esempio n. 4
0
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = \Rx\Observable\BaseObservable::defer(function () {
    return \Rx\Observable\BaseObservable::just(42);
});
$subscription = $source->subscribe($stdoutObserver);
//Next value: 42
//Complete!