您好我正在开发一个app,我有一个userService类来管理用户数据。在这里,我创建了这样的observable:
export class UserService {
currentUser;
userObservable;
userObserver;
constructor(public http: Http,private db:Database, private platform:Platform) {
this.platform.ready().then(()=>{
this.userObservable=Observable.create(observer=>{
this.userObserver=observer;
setTimeout(()=>{
this.getCurrentUser().then((data)=>{
this.userObserver.next(this.currentUser);
});
},600);
}).publish();
this.userObservable.connect();
});
}
saveUser(user){
this.db.insertUserToUsers(user).then(()=>{
this.currentUser=user;
this.userObserver.next(this.currentUser);
});
}
getCurrentUser(){
return new Promise(resolve=>{
this.db.getUser().then((data)=>{
this.currentUser=data;
resolve(this.currentUser);
});
});
}
然后我在主页和构造函数的用户页面订阅它,如下所示:
this.platform.ready().then(() => {
this.userService.getCurrentUser().then((data)=>{
this.currentUser=data;
});
this.userSubscription=this.userService.userObservable.subscribe((data)=>{
console.log(data);
this.currentUser=data;
});
问题是,可观察的开始发出值,一切都可以,但主页,但它不能在用户页面上工作,因为它在观察开始发射的那一刻没有订阅。有什么方法可以解决这个问题吗?如果我在没有publish()
和connect()
的情况下使用observable,它也不起作用,因为某些原因 - 主页订阅确定,用户页面订阅确定,但在此之后,第一个订阅(订阅)从主页)停止工作。有什么想法吗?