public static toObservable ( React\Promise\CancellablePromiseInterface $promise ) : Rx\Observable\AnonymousObservable | ||
$promise | React\Promise\CancellablePromiseInterface | |
return | Rx\Observable\AnonymousObservable |
public static function toObservable(CancellablePromiseInterface $promise)
{
$subject = new AsyncSubject();
$p = $promise->then(function ($value) use($subject) {
$subject->onNext($value);
$subject->onCompleted();
}, function ($error) use($subject) {
$error = $error instanceof \Exception ? $error : new RejectedPromiseException($error);
$subject->onError($error);
});
return new AnonymousObservable(function ($observer, $scheduler = null) use($subject, $p) {
$disp = $subject->subscribe($observer, $scheduler);
return new CallbackDisposable(function () use($p, $disp) {
$disp->dispose();
$p->cancel();
});
});
}
/** * 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); }