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