Skip to content

Instantly share code, notes, and snippets.

@ichiroku11
Last active February 1, 2018 14:05
Show Gist options
  • Select an option

  • Save ichiroku11/6d9a237fb9cfe0c80d82fc10a4af2fc6 to your computer and use it in GitHub Desktop.

Select an option

Save ichiroku11/6d9a237fb9cfe0c80d82fc10a4af2fc6 to your computer and use it in GitHub Desktop.
RxJS do
import * as Rx from "@reactivex/rxjs";
// doオペレータで値の流れを確認
Rx.Observable.of(1, 2, 3)
.do(value => console.log(`do[of]: (value: ${value})`))
.filter(value => value % 2 == 0)
.do(value => console.log(`do[filtered]: (value: ${value})`))
.map(value => value * 2)
.do(value => console.log(`do[mapped]: (value: ${value})`))
.subscribe(
value => console.log(`next: (value: ${value})`),
error => console.log(`error: ${error}`),
() => console.log(`complete:`));
// 実行結果
/*
do[of]: (value: 1)
do[of]: (value: 2)
do[filtered]: (value: 2)
do[mapped]: (value: 4)
next: (value: 4)
do[of]: (value: 3)
complete:
*/
import * as Rx from "@reactivex/rxjs";
// doオペレータの引数はsubscribeと同じ
// completeコールバックも呼ばれる
Rx.Observable.of(2)
.do(
value => console.log(`do.next: (value: ${value})`),
error => console.log(`do.error: ${error}`),
() => console.log(`do.complete:`))
.filter(value => value % 2 == 0)
.subscribe(
value => console.log(`subscribe.next: (value: ${value})`),
error => console.log(`subscribe.error: ${error}`),
() => console.log(`subscribe.complete:`));
// 実行結果
/*
do.next: (value: 2)
subscribe.next: (value: 2)
do.complete:
subscribe.complete:
*/
// errorコールバックも呼ばれる
Rx.Observable.throw("いきなりエラー")
.do(
value => console.log(`do.next: (value: ${value})`),
error => console.log(`do.error: ${error}`),
() => console.log(`do.complete:`))
.filter(value => value % 2 == 0)
.subscribe(
value => console.log(`subscribe.next: (value: ${value})`),
error => console.log(`subscribe.error: ${error}`),
() => console.log(`subscribe.complete:`));
// 実行結果
/*
do.error: いきなりエラー
subscribe.error: いきなりエラー
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment