コード例 #1
0
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = Rx\Observable::range(1, 6)->bufferWithCount(2, 1)->subscribe($stdoutObserver);
コード例 #2
0
ファイル: skipLast.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$observable = Rx\Observable::range(0, 5)->skipLast(3);
$observable->subscribe($stdoutObserver);
コード例 #3
0
ファイル: skip.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
use Rx\Observable\ArrayObservable;
$observable = Rx\Observable::fromArray([1, 1, 2, 3, 5, 8, 13]);
$observable->skip(3)->subscribe($stdoutObserver);
コード例 #4
0
ファイル: concatAll.php プロジェクト: ReactiveX/RxPHP
<?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);
コード例 #5
0
ファイル: error-observable.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$observable = Rx\Observable::error(new Exception('Oops!'));
$observable->subscribe($stdoutObserver);
コード例 #6
0
ファイル: filter.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$observable = Rx\Observable::fromArray([21, 42, 84]);
$observable->filter(function ($elem) {
    return $elem >= 42;
})->subscribe($stdoutObserver);
コード例 #7
0
ファイル: groupByUntil.php プロジェクト: ReactiveX/RxPHP
<?php

use Rx\Observer\CallbackObserver;
require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$codes = [['id' => 38], ['id' => 38], ['id' => 40], ['id' => 40], ['id' => 37], ['id' => 39], ['id' => 37], ['id' => 39], ['id' => 66], ['id' => 65]];
$source = Rx\Observable::fromArray($codes)->concatMap(function ($x) {
    return \Rx\Observable::timer(100)->mapTo($x);
})->groupByUntil(function ($x) {
    return $x['id'];
}, function ($x) {
    return $x['id'];
}, function ($x) {
    return Rx\Observable::timer(200);
});
$subscription = $source->subscribe(new CallbackObserver(function (\Rx\Observable $obs) {
    // Print the count
    $obs->count()->subscribe(new CallbackObserver(function ($x) {
        echo 'Count: ', $x, PHP_EOL;
    }));
}, function (Exception $err) {
    echo 'Error', $err->getMessage(), PHP_EOL;
}, function () {
    echo 'Completed', PHP_EOL;
}), $scheduler);
$loop->run();
コード例 #8
0
<?php

require_once __DIR__ . '/../bootstrap.php';
$observable = Rx\Observable::range(1, 5)->skipWhileWithIndex(function ($i, $value) {
    return $i < 3;
});
$observable->subscribe($stdoutObserver);
コード例 #9
0
ファイル: repeatWhen.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$source = Rx\Observable::just(42)->repeatWhen(function (\Rx\Observable $notifications) {
    return $notifications->scan(function ($acc, $x) {
        return $acc + $x;
    }, 0)->delay(1000)->doOnNext(function () {
        echo "1 second delay", PHP_EOL;
    })->takeWhile(function ($count) {
        return $count < 2;
    });
});
$subscription = $source->subscribe($createStdoutObserver(), $scheduler);
$loop->run();
コード例 #10
0
ファイル: sum.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = Rx\Observable::range(1, 10)->sum();
$subscription = $source->subscribe($stdoutObserver);
コード例 #11
0
ファイル: catchError.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$obs2 = Rx\Observable::just(42);
$source = \Rx\Observable::error(new Exception("Some error"))->catchError(function (Exception $e, \Rx\Observable $sourceObs) use($obs2) {
    return $obs2;
});
$subscription = $source->subscribe($stdoutObserver);
コード例 #12
0
ファイル: retryWhen.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = new \React\EventLoop\StreamSelectLoop();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$source = Rx\Observable::interval(1000)->map(function ($n) {
    if ($n === 2) {
        throw new Exception();
    }
    return $n;
})->retryWhen(function ($errors) {
    return $errors->delay(200);
})->take(6);
$subscription = $source->subscribe($createStdoutObserver(), $scheduler);
$loop->run();
コード例 #13
0
ファイル: flatMapTo.php プロジェクト: ReactiveX/RxPHP
<?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();
コード例 #14
0
ファイル: mapTo.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$subscription = Rx\Observable::fromArray([21, 42])->mapTo(1)->subscribe($stdoutObserver);
コード例 #15
0
ファイル: concatMap.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$source = Rx\Observable::range(0, 5)->concatMap(function ($x, $i) use($scheduler) {
    return \Rx\Observable::interval(100, $scheduler)->take($x)->map(function () use($i) {
        return $i;
    });
});
$subscription = $source->subscribe($stdoutObserver);
$loop->run();
コード例 #16
0
ファイル: merge.php プロジェクト: xsilen/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = React\EventLoop\Factory::create();
$scheduler = new Rx\Scheduler\EventLoopScheduler($loop);
$observable = Rx\Observable::just(42)->repeat();
$otherObservable = Rx\Observable::just(21)->repeat();
$mergedObservable = $observable->merge($otherObservable, $scheduler)->take(10);
$disposable = $mergedObservable->subscribe($stdoutObserver, $scheduler);
$loop->run();
//Next value: 42
//Next value: 21
//Next value: 42
//Next value: 21
//Next value: 42
//Next value: 21
//Next value: 42
//Next value: 21
//Current memory usage: 838.547K
コード例 #17
0
ファイル: mapWithIndex.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$subscriptions = Rx\Observable::fromArray([21, 42])->mapWithIndex(function ($index, $elem) {
    return $index + $elem;
})->subscribe($stdoutObserver);
コード例 #18
0
ファイル: start.php プロジェクト: voryx/Rx.PHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = Rx\Observable::start(function () {
    return 42;
});
$source->subscribe($stdoutObserver);
//Next value: 42
//Complete!
コード例 #19
0
ファイル: scan-with-seed.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
//With a seed
$source = Rx\Observable::range(1, 3);
$subscription = $source->scan(function ($acc, $x) {
    return $acc * $x;
}, 1)->subscribe($createStdoutObserver());
コード例 #20
0
ファイル: retry.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$count = 0;
$observable = Rx\Observable::interval(1000, $scheduler)->flatMap(function ($x) use(&$count) {
    if (++$count < 2) {
        return Rx\Observable::error(new \Exception("Something"));
    }
    return Rx\Observable::just(42);
})->retry(3)->take(1);
$observable->subscribe($stdoutObserver);
$loop->run();
コード例 #21
0
ファイル: concatMapTo.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$obs = \Rx\Observable::interval(100, $scheduler)->take(3)->mapWithIndex(function ($i) {
    return $i;
});
$source = Rx\Observable::range(0, 5)->concatMapTo($obs);
$subscription = $source->subscribe($stdoutObserver);
$loop->run();
コード例 #22
0
ファイル: merge-all.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = React\EventLoop\Factory::create();
$scheduler = new Rx\Scheduler\EventLoopScheduler($loop);
$sources = Rx\Observable::range(0, 3)->map(function ($x) {
    return Rx\Observable::range($x, 3);
});
$merged = \Rx\Observable::mergeAll($sources);
$disposable = $merged->subscribe($stdoutObserver, $scheduler);
$loop->run();
コード例 #23
0
ファイル: flatMap.php プロジェクト: mbonneau/RxPHP
<?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->flatMap(function ($value) {
    return Rx\Observable::range(1, $value);
}, $scheduler);
$disposable = $selectManyObservable->subscribe($stdoutObserver, $scheduler);
$loop->run();
コード例 #24
0
ファイル: switchFirst.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$source = Rx\Observable::fromArray([\Rx\Observable::interval(100)->mapTo('a'), \Rx\Observable::interval(200)->mapTo('b'), \Rx\Observable::interval(300)->mapTo('c')])->switchFirst()->take(3);
$subscription = $source->subscribe($stdoutObserver, $scheduler);
$loop->run();
コード例 #25
0
ファイル: timeout.php プロジェクト: voryx/Rx.PHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = new \React\EventLoop\StreamSelectLoop();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
Rx\Observable::interval(1000)->timeout(500)->subscribe($createStdoutObserver("One second - "), $scheduler);
Rx\Observable::interval(100)->take(3)->timeout(500)->subscribe($createStdoutObserver("100 ms     - "), $scheduler);
$loop->run();
// Output:
//100 ms     - Next value: 0
//100 ms     - Next value: 1
//100 ms     - Next value: 2
//100 ms     - Complete!
//One second - Exception: timeout
コード例 #26
0
ファイル: race.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$source = Rx\Observable::race([Rx\Observable::timer(500)->map(function () {
    return 'foo';
}), Rx\Observable::timer(200)->map(function () {
    return 'bar';
})]);
$source->subscribe($stdoutObserver, $scheduler);
$loop->run();
コード例 #27
0
ファイル: average.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = Rx\Observable::range(0, 9)->average();
$subscription = $source->subscribe($stdoutObserver);
コード例 #28
0
ファイル: skipWhile.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$observable = Rx\Observable::range(1, 5)->skipWhile(function ($x) {
    return $x < 3;
});
$observable->subscribe($stdoutObserver);
コード例 #29
0
ファイル: skipUntil.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$loop = \React\EventLoop\Factory::create();
$scheduler = new \Rx\Scheduler\EventLoopScheduler($loop);
$observable = Rx\Observable::interval(1000)->skipUntil(\Rx\Observable::timer(5000))->take(3);
$observable->subscribe($stdoutObserver, $scheduler);
$loop->run();
コード例 #30
0
ファイル: pluck.php プロジェクト: ReactiveX/RxPHP
<?php

require_once __DIR__ . '/../bootstrap.php';
$source = Rx\Observable::fromArray([(object) ['value' => 0], (object) ['value' => 1], (object) ['value' => 2]])->pluck('value');
$subscription = $source->subscribe($stdoutObserver);