toObservable() public static method

Converts a Promise to an Observable sequence
public static toObservable ( React\Promise\CancellablePromiseInterface $promise ) : Rx\Observable\AnonymousObservable
$promise React\Promise\CancellablePromiseInterface
return Rx\Observable\AnonymousObservable
Example #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(callable $factory)
 {
     $observableFactory = function () use($factory) {
         return Promise::toObservable($factory());
     };
     return Observable::defer($observableFactory);
 }
Example #2
0
 /**
  * @return ObservableInterface
  */
 public function jobs() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('builds/' . $this->id()))->flatMap(function ($response) {
         return Observable::fromArray($response['jobs']);
     })->map(function ($job) {
         return $this->getTransport()->getHydrator()->hydrate('Job', $job);
     });
 }
 public function commits() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('repos/' . $this->slug() . '/builds'))->flatMap(function ($response) {
         return Observable::fromArray($response['commits']);
     })->map(function ($build) {
         return $this->getTransport()->getHydrator()->hydrate('Commit', $build);
     });
 }
Example #4
0
 /**
  * @return ObservableInterface
  */
 public function annotations() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('jobs/' . $this->id() . '/annotations'))->flatMap(function ($response) {
         return Observable::fromArray($response['annotations']);
     })->map(function ($annotation) {
         return $this->getTransport()->getHydrator()->hydrate('Annotation', $annotation);
     });
 }
Example #5
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);
 }
Example #6
0
 /**
  * @test
  *
  */
 public function from_promise_failure()
 {
     $p = Promise::rejected(new Exception('error'));
     $source = Promise::toObservable($p);
     $source->subscribe(new CallbackObserver(function ($x) {
         $this->assertFalse(true);
     }, function ($error) {
         $this->assertEquals($error, new Exception('error'));
     }, function () {
         $this->assertFalse(true);
     }));
 }
<?php

require_once __DIR__ . '/../bootstrap.php';
$p = \Rx\React\Promise::resolved(42);
$source = \Rx\React\Promise::toObservable($p);
$subscription = $source->subscribe($stdoutObserver);
//Next value: 42
//Complete!
// Create a promise which rejects with an error
$p = \Rx\React\Promise::rejected(new Exception('because'));
$source2 = \Rx\React\Promise::toObservable($p);
$subscription = $source2->subscribe($createStdoutObserver());
//Exception: because
 /**
  * @return ObservableInterface
  */
 public function broadcasts() : ObservableInterface
 {
     return Promise::toObservable($this->transport->request('broadcasts'))->flatMap(function ($response) {
         return Observable::fromArray($response['broadcasts']);
     })->map(function ($broadcast) {
         return $this->getTransport()->getHydrator()->hydrate('Broadcast', $broadcast);
     });
 }
 /**
  * @test
  */
 public function observable_dispose_after_complete()
 {
     $canceled = false;
     $deferred = new Deferred(function () use(&$canceled) {
         $canceled = true;
     });
     $o = Promise::toObservable($deferred->promise());
     $this->scheduler->schedule(function () use($deferred) {
         $deferred->resolve(1);
     }, 200);
     $results = new MockObserver($this->scheduler);
     $s = $o->subscribe($results, $this->scheduler);
     $this->scheduler->schedule(function () use($s) {
         $s->dispose();
     }, 250);
     $this->scheduler->start();
     $this->assertMessages([onNext(200, 1), onCompleted(200)], $results->getMessages());
     $this->assertFalse($canceled);
 }
 /**
  * @return ObservableInterface
  */
 public function caches() : ObservableInterface
 {
     return Promise::toObservable($this->getTransport()->request('repos/' . $this->slug() . '/caches'))->flatMap(function ($response) {
         return Observable::fromArray($response['caches']);
     })->map(function ($cache) {
         return $this->getTransport()->getHydrator()->hydrate('Cache', $cache);
     });
 }