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
を与えることができます。