【发布时间】:2021-09-06 04:45:46
【问题描述】:
我有两个带有嵌套订阅的函数。
期望的行为:
- 更新用户数据
- 如果上一步成功 -> 更新用户图标
- 如果上一步成功或跳过/出错 -> 完成,只需使用返回的 url 路由
foo(): void {
this.httpHandler.updateUser(userData).subscribe(
(successUserData) => this.uploadAvatar().subscribe(
(url) => this.route.navigate(url) //finish, some routing based on result url;
)
)
}
//returns an url or '' if skipped
uploadAvatar(): Observable<string> {
let subject = new Subject<string>();
if (!skipFileUpload) {
this.httpHandler.uploadImage(this.file).subscribe(
(successData) => {
this.httpHandler.verifySomething(successData.id).subscribe(
(verifiedData) =>
if (verifiedData)
subject.next(verifiedData.url)
)
}
)
} else {
subject.next('');
}
return subject.asObservable();
}
问题:
如果文件没有上传,则 observable 不会解析。换句话说:subject.next(''); 不起作用,我的路由到 '' 没有发生。
但是,如果上传发生,那么一切都会按预期进行
整个过程是否可以扁平化或简化?
提前致谢。
【问题讨论】:
标签: angular typescript rxjs