以下为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。