observable 和 observer 和subscription 区别和联系

473 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

以下这行代码可以描述出三者的关系

const subscription=observable.subscribe(observer);

1,observable 数据生产者 多个值的集合的懒压入(lazy push)

// 创建一个observable, 一旦有observer subscribe ,就按顺序发送值

const observable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  subscriber.next(3);
});

2,observer 数据的消费者,简单来说就是一系列的回调函数

const observer = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
  complete: () => console.log('Observer got a complete notification'),
};
// 为了触发observable并且看见这些值 ,我们订阅它 这样就创建了一个observer
observable.subscribe(observer);


// 或者直接匿名调用
observable.subscribe({
  next(x) { console.log('got value ' + x); },
  error(err) { console.error('something wrong occurred: ' + err); },
  complete() { console.log('done'); }
});

3,subscription 代表observable的执行 的一个对象;或者这样说,是代表一种订阅关系,像老板和员工签订的合同,而且这种合同关系是可以取消的。

//取消正在进行的observable 执行
subscription.unsubscribe();