Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to
send out observer messages.
public static range ( $start, $count, rx\SchedulerInterface $scheduler = null ) : |
||
$start | ||
$count | ||
$scheduler | rx\SchedulerInterface | |
리턴 |
/** * @test */ public function range_dispose() { $results = $this->scheduler->startWithDispose(function () { return Observable::range(-10, 5, $this->scheduler); }, 204); $this->assertMessages([onNext(201, -10), onNext(202, -9), onNext(203, -8)], $results->getMessages()); }
public function __invoke(Observable $attempts) { return Observable::range(1, $this->max)->zip([$attempts], function ($i, $e) { if ($i >= $this->max) { throw $e; } return $i; })->flatMap(function ($i) { return Observable::timer(1000); }); }
<?php require_once __DIR__ . '/../bootstrap.php'; list($evens, $odds) = \Rx\Observable::range(0, 10)->partition(function ($x) { return $x % 2 === 0; }); $evens->subscribe($createStdoutObserver('Evens ')); $odds->subscribe($createStdoutObserver('Odds '));
<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::range(0, 3)->map(function ($x) { return \Rx\Observable::range($x, 3); })->concatAll(); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; /* With publish */ $interval = \Rx\Observable::range(0, 10); $source = $interval->take(2)->doOnNext(function ($x) { echo "Side effect\n"; }); $published = $source->publish(); $published->subscribe($createStdoutObserver('SourceC ')); $published->subscribe($createStdoutObserver('SourceD ')); $published->connect();
<?php require_once __DIR__ . '/../bootstrap.php'; $source = \Rx\Observable::range(1, 5)->takeWhile(function ($x) { return $x < 3; }); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $observable = \Rx\Observable::range(0, 3); $observable->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $source = \Rx\Observable::range(0, 5)->takeLast(3); $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = React\EventLoop\Factory::create(); $scheduler = new Rx\Scheduler\EventLoopScheduler($loop); $observable = Rx\Observable::range(1, 5); $selectManyObservable = $observable->flatMapTo(\Rx\Observable::range(0, 2)); $disposable = $selectManyObservable->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $source = \Rx\Observable::range(1, 3)->repeat(3); $subscription = $source->subscribe($createStdoutObserver()); //Next value: 1 //Next value: 2 //Next value: 3 //Next value: 1 //Next value: 2 //Next value: 3 //Next value: 1 //Next value: 2 //Next value: 3 //Complete!
<?php require_once __DIR__ . '/../bootstrap.php'; $source = \Rx\Observable::range(0, 3)->doOnNext(function ($x) { echo 'Do Next:', $x, PHP_EOL; }); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $source = \Rx\Observable::range(1, 3)->flatMapLatest(function ($x) { return \Rx\Observable::fromArray([$x . 'a', $x . 'b']); }); $source->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php include __DIR__ . "/../../vendor/autoload.php"; $toFile = new \Rx\React\ToFileObserver(__DIR__ . "/../test2.csv"); \Rx\Observable::range(1, 20)->take(5)->mapTo("This is pretty cool \n")->subscribe($toFile);
<?php require_once __DIR__ . '/../bootstrap.php'; $source = \Rx\Observable::range(0, 3)->doOnEach(new \Rx\Observer\CallbackObserver(function ($x) { echo 'Do Next:', $x, PHP_EOL; }, function (Exception $err) { echo 'Do Error:', $err->getMessage(), PHP_EOL; }, function () { echo 'Do Completed', PHP_EOL; })); $subscription = $source->subscribe($stdoutObserver);
public function testWithImmediateSchedulerWithRecursion() { $completed = false; $emitted = null; Observable::range(0, 10)->flatMap(function ($x) use(&$count) { if (++$count < 2) { return Observable::error(new \Exception("Something")); } return Observable::just(42); })->retry(3)->take(1)->subscribe(new CallbackObserver(function ($x) use(&$emitted) { $emitted = $x; }, null, function () use(&$completed) { $completed = true; }), new ImmediateScheduler()); $this->assertTrue($completed); $this->assertEquals(42, $emitted); }
<?php require __DIR__ . '/../vendor/autoload.php'; $source = \Rx\Observable::range(0, 5)->delay(1000); $generator = \Rx\await($source); foreach ($generator as $item) { echo $item, PHP_EOL; } echo "DONE";
<?php require_once __DIR__ . '/../bootstrap.php'; $subject = new \Rx\Subject\Subject(); $source = \Rx\Observable::range(0, 3)->multicast($subject); $subscription = $source->subscribe($stdoutObserver); $subject->subscribe($stdoutObserver); $connected = $source->connect(); $subscription->dispose(); //Next value: 0 //Next value: 0 //Next value: 1 //Next value: 1 //Next value: 2 //Next value: 2 //Complete!
<?php require_once __DIR__ . '/../bootstrap.php'; $source = \Rx\Observable::range(1, 5)->takeWhileWithIndex(function ($i) { return $i < 3; }); $subscription = $source->subscribe($stdoutObserver);