当我订阅我的 Observable 时,我的下一个不工作
when i subscribe my Observable, my next is not working
myObservable():Observable<boolean>{
const result = new Subject<boolean>();
result.next(true);
result.complete();
return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));
当我订阅我的 Observable 时,函数名称是 myObservable
但控制台永远无法工作
this.myObservable().subscribe({
next: _response => {console.log('next');}
error: error => {
console.log('had an error');
},
complete: () => {
console.log('complete');
this.accountDataLoaded = true;
}})
试试生命周期控制台
完整的是打印但下一个不是
代码确实:
- 创建
Observable
- 发出一个值:
true
- 完成
Observable
- return
Observable
- 订阅
Observable
的下一个值
当然,不会发出新值。这就是永远不会执行回调的原因。
例如,如果您想在订阅后发出值,可以使用超时:
function myObservable():Observable<boolean>{
const result = new Subject<boolean>();
setTimeout(() => {
result.next(true);
result.complete();
}, 1000)
return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));
但是,当您创建 Subject
时,您还可以使用 ReplaySubject 向新订阅者发送旧值
function myObservable():Observable<boolean>{
const result = new ReplaySubject<boolean>();
result.next(true);
result.complete();
return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));
myObservable():Observable<boolean>{
const result = new Subject<boolean>();
result.next(true);
result.complete();
return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));
当我订阅我的 Observable 时,函数名称是 myObservable 但控制台永远无法工作
this.myObservable().subscribe({
next: _response => {console.log('next');}
error: error => {
console.log('had an error');
},
complete: () => {
console.log('complete');
this.accountDataLoaded = true;
}})
试试生命周期控制台 完整的是打印但下一个不是
代码确实:
- 创建
Observable
- 发出一个值:
true
- 完成
Observable
- return
Observable
- 订阅
Observable
的下一个值
当然,不会发出新值。这就是永远不会执行回调的原因。
例如,如果您想在订阅后发出值,可以使用超时:
function myObservable():Observable<boolean>{
const result = new Subject<boolean>();
setTimeout(() => {
result.next(true);
result.complete();
}, 1000)
return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));
但是,当您创建 Subject
时,您还可以使用 ReplaySubject 向新订阅者发送旧值
function myObservable():Observable<boolean>{
const result = new ReplaySubject<boolean>();
result.next(true);
result.complete();
return result.asObservable();
}
this.myObservable().subscribe(x=> console.log(x));