1
我无法让我的函数getData多次运行,第一次调用getData时,字段名称为'a',数据从returnData返回,块getData的.subscribe内部被击中。第二次用一个字段'b'调用getData时,returnData中的所有内容都按预期工作,但getData的.subscribe内部的块根本没有被打中。订阅从函数返回的Observable只能在第一次运行
private getData(field: string): void {
this.returnData(field)
.subscribe((data) => {
//Handle Data
//This block is only hit the first time getData is called
});}
private returnData(field: string): Observable <SomeObj> {
let subj: Subject <SomeObj> = new Subject <SomeObj>();
const obj: SomeObj = new SomeObj(field);
this.someDataServive.someFunction(field)
.subscribe(
(data) => {
//set properties on obj from data and emit obj
subj.next(obj);
//This block is always hit every time getData is called, and the
// obj returned from here is correct
},
(err) => {
subj.next(obj);
});
return (subj.asObservable());
}
添加打字稿的标签以获得语法高亮,它已经很难与所有评论 –
阅读我与代码中的plunker为更好的可读性这里:https://plnkr.co/edit/pylvkE6QBnqjd81nsWlS? p =目录 – ahetman