public function subscribe(ObserverInterface $observer, SchedulerInterface $scheduler = null) { if ($this->scheduler !== null) { $scheduler = $this->scheduler; } if ($scheduler === null) { $scheduler = new ImmediateScheduler(); } $i = 0; return $scheduler->scheduleRecursive(function ($reschedule) use(&$observer, &$i) { if ($i < $this->count) { $observer->onNext($this->start + $i); $i++; $reschedule(); } else { $observer->onCompleted(); } }); }
public function subscribe(ObserverInterface $observer, SchedulerInterface $scheduler = null) { $values =& $this->data; $max = count($values); $keys = array_keys($values); $count = 0; if ($scheduler === null) { $scheduler = new ImmediateScheduler(); } return $scheduler->scheduleRecursive(function ($reschedule) use(&$observer, &$values, $max, &$count, $keys) { if ($count < $max) { $observer->onNext($values[$keys[$count]]); $count++; if ($count >= 1) { $reschedule(); return; } } $observer->onCompleted(); }); }
/** * @test */ public function now_returns_the_time() { $scheduler = new ImmediateScheduler(); $this->assertTrue(abs(time() * 1000 - $scheduler->now()) < 1000, "time difference is less than or equal to 1"); }