RxGo で Observable の購読を途中でキャンセルする方法

Go ReactiveX how to

RxGo で Observable の購読をキャンセルするには context.Context を利用します。

parent := context.Background()
ctx, cancel := context.WithCancel(parent)

<-observable.ForEach(func(i interface{}) {

}, func(err error) {

}, func() {

}, rxgo.WithContext(ctx))

// cancel を実行することで購読をキャンセルすることができます
cancel()

context.Context の準備

キャンセルすることのできる context.Context を生成しておきます。

parent := context.Background()
ctx, cancel := context.WithCancel(parent)

ForEach にオプションとして context.Context を与える

Observable.ForEach は第 4 引数以降にオプションを与えることができます。rxgo.WithContext を利用すれば購読処理に context.Context を与えることができます。

参考資料