如何在 TypeScript 中使用观察者而不是主题作为事件消息?

How to use a observer instead of Subjects for event messages in TypeScript?

我正在使用 TypeScript,并且在我的项目中我使用 rxjs/Subject 作为事件消息。

这是一个例子:

class Downloader {

    const done = new Subject();

    download(): Promise<void> {
        return downloadSomeFile(...)
            .then(() => {
               done.next();
            });
    }
}

在我项目的其他地方,我只是订阅了它:

done.subscribe(() => { /* do something fancy */ });

这在技术上是可行的,但我了解到这不是rxjs的设计思路,而是直接使用Observable。为什么会这样?如果正确实施,我的代码片段会是什么样子?

会员只能将其作为可观察对象订阅,不能从外部触发 next。 知道一次会出现多个subscriptionsubject是更好的选择。

class Downloader {
        
            private _done = new Subject(); // for triggering next

            public done = _done.asObservable(); // for subscribers as Observable
        
            public  download(): Promise<void> {
                return downloadSomeFile(...)
                    .then(() => {
                       this._done.next();
                    });
            }
        }