在一个简单的情况下堆叠一点。所以,我在页面上有一些上传动作如下:
onUpload$: Subject<SomeUpload> = new Subject<SomeUpload>();
uploadAction$: Observable<Action> = this.onUpload$.map(entity => this.someActionService.upload(entity));
此uploadAction $使用agnular2组件订阅,基于状态
this.subscription = Observable.merge(
this.uploadAction$
).subscribe(this.store);
动作发送到服务器base64图像并作为响应我得到网址,这个网址我可以得到像
someResponseUrl$: Observable<String> = this.store.let(getSomeUrlFromState());
所以,我需要做一些像回调,因为这个url没有在模板中使用,我只需要在代码中操作数据。有人可以帮助和解释,如何从这个可观察的字符串中进行操作,获取数据并使用它进行回调。谢谢你的建议!
P.S。我正在尝试这样的事情
uploadAction$: Observable<Action> = this.onUpload$.map(entity =>
this.someActionService.upload(entity))
.do(() => {
const subscription =
this.store.let(getSomeUrlFromState()).subscribe(url => {
console.log(url)
});
});
它的工作,但我认为这是解决方案的奇怪方式......
答案 0 :(得分:0)
您可以执行以下操作,但这取决于您希望实现的目标以及您希望在this.someActionService
的订阅者中收到的内容:
uploadAction$: Observable<Action> = this.onUpload$
.map(entity => this.someActionService.upload(entity))
.mergeMap(() => this.store.let(getSomeUrlFromState()))
.do(url => console.log(url));
您可能希望使用concatMap
代替mergeMap
,具体取决于您要执行的操作。