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