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