我有这种情况:
this._userService
.create(user)
.pipe(
switchMap(res => {
if (this.accountStore.accounts.length > 0) {
return this._accountsService.manageAccounts(
accounts,
res.idUser
);
} else return of();
})
)
.subscribe(
_ => {
this._router.navigate(["/app/main/user/"]);
},
() => (this.saving = false)
);
如果帐户数大于0,则表示正常。但是,如果转到else块,则return of()
不会执行next()导航到用户路线;
我在做什么错了?
答案 0 :(得分:0)
类似于this answer,但由于版本不同而异,您需要使用of({}).pipe(take(1))
创建一个可观察的空对象,然后调用next。
输入您的代码
...
} else return of({}).pipe(take(1));
...
答案 1 :(得分:0)
您需要将值传递到of
中以执行下一个运算符或订阅者。在这种情况下,我只是将null
作为of(null)
答案 2 :(得分:0)
如果您使用创新运算符EMPTY
文档说:
可观察到的立即完成。
创建一个Observable,该Observable不会向观察者发出任何项目,并立即发出完整的通知。
示例:
// RxJS v6+
import { EMPTY } from 'rxjs';
//output: 'Complete!'
const subscribe = EMPTY.subscribe({
next: () => console.log('Next'),
complete: () => console.log('Complete!')
});
stackblitz