以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
71. 实现 Observable Subject

class Subject {
  constructor() {
    this.observers = []
  }
  subscribe(observer) {
    this.observers.push(observer)
  }
  next(value) {
    this.observers.forEach(observer => observer.next(value))
  }
  error(error) {
    this.observers.forEach(observer => observer.error(err))
  }
  complete() {
    this.observers.forEach(observer => observer.complete())
  }
}

解析:

题目要求实现一个简单的 Subject Class,它应该有 subscribe()next()error()complete() 这几个方法。其中 subscribe() 方法用于添加订阅者(即 Observer), next() 方法用于向所有的订阅者广播 value, error() 方法用于向所有的订阅者广播 error, complete() 方法用于向所有的订阅者广播 complete 事件。

因为 Subject 是基于 Observable 实现的,所以我们可以直接使用 Observable 构造函数创建一个可观察对象,并将这个可观察对象传递给 Subject 作为源。

subscribe() 方法中,我们将订阅者添加到 observers 数组中, next()error()complete() 方法中,我们遍历 observers 数组,并向每一个订阅者广播对应的事件。

最终,我们就实现了一个简单的 Subject Class