【发布时间】:2018-08-28 15:36:24
【问题描述】:
我有一个行为主题的服务似乎没有在 next() 上发送。
我可以看到当我 console.log 响应时该方法被触发
errorSubject = new BehaviorSubject<any>(
{
exception: false,
message: '',
segNum: ''
}
);
error = this.errorSubject.asObservable();
responseHandler(response) {
let obj = {};
if (response.success) {
return response.payload;
} else {
obj = {
exception: true,
message: response.exception.message,
segNum: response.exception.seqNum
};
}
console.log(obj);
this.errorSubject.next(obj);
}
然后当我像这样订阅它时:
error;
ngOnInit() {
this.error = this.apiHandlerService.error.subscribe(obj => {
console.log(obj);
if (obj.exception) {
this.openModal();
}
});
}
所以我调用的每个 API 都会通过此方法传递。如果没有返回异常,则发送有效负载,否则将异常发送到错误模式组件。
当我触发 else 条件时,它似乎正在发送 errorSubject 的初始值,而没有得到 next()
有什么想法吗?
在下面的答案之后,我尝试重新排列我的方法,使其最后返回。还是不行:
responseHandler(response) {
let obj;
if (!response.success) {
obj = {
exception: true,
message: response.exception.message,
segNum: response.exception.seqNum
};
console.log(response);
} else {
obj = response.payload;
}
this.errorSubject.next(obj);
return obj;
}
【问题讨论】:
-
responseHandler是从哪里调用的?
标签: javascript angular typescript rxjs behaviorsubject