如何在 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
。
知道一次会出现多个subscription
,subject
是更好的选择。
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();
});
}
}
我正在使用 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
。
知道一次会出现多个subscription
,subject
是更好的选择。
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();
});
}
}