Solution
class MyObservable {
constructor(subscribeFn) {
this._subscribeFn = subscribeFn;
}
subscribe(observer) {
this._subscribeFn(observer);
}
}
const myObservable = new MyObservable((observer) => {
observer.next('Hello world!');
setTimeout(() => {
observer.next('Data after 1 second');
}, 1000);
setTimeout(() => {
observer.complete();
}, 2000);
});
myObservable.subscribe({
next(data) {
console.log('Received data:', data);
},
error(err) {
console.error('Error:', err);
},
complete() {
console.log('Observable completed');
},
});