Observable 在定义 user.id 之后创建发射
Observable create emit after when user.id is defined
我无法在定义用户 ID 时发出它。这就是我所知道的,一旦你订阅了 observable,它就会监听变化并发出。是否有任何运算符可以在定义用户 ID 时发出。
我也尝试过使用 of 和新的 Observable 运算符,我得到了相同的输出。
constructor() {
setTimeout(() => {
this.user.id = 1
,5000})
}
getUserIdChat(): Observable<any> {
return Observable.create(data=> {
console.log(" i called")
if(typeof this.user.id != 'undefined') {
console.log('next called')
data.next(this.user.id);
data.complete();
}
})
}
constructor(private user: UserService) {
this.user.getUserIdChat().subscribe(data => {
console.log('data from user', data)
})
}
我应该在控制台中得到输出 1
像这样使用全局主题...
_userSubject = new Subject<any>();
constructor() {
setTimeout(() => {
this.user.id = 1;
this._userSubject.next(this.user.id);
this._userSubject.complete();
},
5000);
getUserIdChat(): Observable<any> {
return this._userSubject;
}
}
创建一个主题。
userSubject = new Subject<number>();
constructor() {
setTimeout(() => {
this.user.id = 1;
this.userSubject.next(this.user.id)
,5000})
}
getUserIdChat(): Observable<any> {
return userSubject.asObservable()
}
constructor(private user: UserService) {
this.user.getUserIdChat().subscribe(data => {
console.log('data from user', data)
})
}
我无法在定义用户 ID 时发出它。这就是我所知道的,一旦你订阅了 observable,它就会监听变化并发出。是否有任何运算符可以在定义用户 ID 时发出。
我也尝试过使用 of 和新的 Observable 运算符,我得到了相同的输出。
constructor() {
setTimeout(() => {
this.user.id = 1
,5000})
}
getUserIdChat(): Observable<any> {
return Observable.create(data=> {
console.log(" i called")
if(typeof this.user.id != 'undefined') {
console.log('next called')
data.next(this.user.id);
data.complete();
}
})
}
constructor(private user: UserService) {
this.user.getUserIdChat().subscribe(data => {
console.log('data from user', data)
})
}
我应该在控制台中得到输出 1
像这样使用全局主题...
_userSubject = new Subject<any>();
constructor() {
setTimeout(() => {
this.user.id = 1;
this._userSubject.next(this.user.id);
this._userSubject.complete();
},
5000);
getUserIdChat(): Observable<any> {
return this._userSubject;
}
}
创建一个主题。
userSubject = new Subject<number>();
constructor() {
setTimeout(() => {
this.user.id = 1;
this.userSubject.next(this.user.id)
,5000})
}
getUserIdChat(): Observable<any> {
return userSubject.asObservable()
}
constructor(private user: UserService) {
this.user.getUserIdChat().subscribe(data => {
console.log('data from user', data)
})
}