离子2热/冷可观测量

时间:2017-04-04 06:28:35

标签: angular ionic2 angular2-observables

您好我正在开发一个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,它也不起作用,因为某些原因 - 主页订阅确定,用户页面订阅确定,但在此之后,第一个订阅(订阅)从主页)停止工作。有什么想法吗?

0 个答案:

没有答案