Subscription: Observableのキャンセル


Subscription

unsubscribe()メソッド

const subscription = interval(500).subscribe(console.log)
// 2秒後にunsubscribe()で購読を止める
setTimeout(() => subscription.unsubscribe(), 2000)
// 0 1 2

add(子Subscription)メソッド

const s1 = interval(500).subscribe(console.log)
const s2 = interval(900).pipe(map(x => x + 10)).subscribe(console.log)
s1.add(s2)
setTimeout(() => s1.unsubscribe(), 2000)
// 0 10 1 2 11

カスタムunsubscribe()メソッド

const observable = new Observable(observer => {
  const sub = interval(200).subscribe(x => observer.next(x))

  // カスタムunsubscribe関数
  return function unsubscribe() {
    sub.unsubscribe()
    console.log('キャンセル')
  }
})

const subscription = observable.subscribe(console.log)
setTimeout(()=>subscription.unsubscribe(), 1000)
// 0 1 2 3 キャンセル