【发布时间】:2019-02-27 02:28:46
【问题描述】:
我将Angular 6 与RxJS 6.2.2 和RxJS Compact 6.2.2 一起使用。
我有一段代码可以调用我的api服务来加载一些记录,即:
this.route.params
.flatMap((params: Params) => {
if (!params['id']) {
return Observable.throwError('Id is not specified.');
}
this.itemId = params['id'];
this.isEditMode = true;
this.loadCategoryGroupCondition = new LoadCategoryGroupViewModel();
this.loadCategoryGroupCondition.id = [this.itemId];
this.loadCategoryGroupCondition.pagination = new Pagination();
return this.categoryGroupService
.loadCategoryGroup(this.loadCategoryGroupCondition);
})
.subscribe(
(loadCategoryGroupResult: SearchResult<CategoryGroup>) => {
console.log(loadCategoryGroupResult);
},
() => {},
() => {
console.log('Completed')
});
上面的代码可以打印从我的 api 服务返回的我的项目列表。这意味着 onSuccess 已被调用。
但是完整的方法被触发了。 我的代码有什么问题?
谢谢你,
【问题讨论】:
-
为什么会完成?
-
你的标题说“永远不会完成”,但在你的问题中你说“但是完整的方法被解雇了”,那么你期望什么以及发生了什么?
-
顺便说一句
Observable.throwError看起来很奇怪,在以前的 rxjs 中它是Observable.throw而在 v6 中它只是throwError... -
@MartinAdámek,我会显示 2 条消息: - 第一条应该是:console.log(loadCategoryGroupResult); - 第二个应该是:console.log('Completed') 我的实际情况是: - console.log(loadCategoryGroupResult) 被调用。 - console.log('Completed') 不是
-
那是因为
this.route.params永远不会完成。只有合并到链中的 api 调用。如果你想完成被调用,你需要完成所有源 Observables。
标签: javascript angular typescript rxjs rxjs6