如何返回布尔可观察值并检查该布尔值

Ash*_*him 9 javascript subscribe angular

我想使用 observable 来同步运行我的代码,我想在从服务器获取图标后返回一个真值,以便我可以使用它。我该怎么做 ?

ngOnInit() {
  this.addIcons().subscribe(data=>{
    if(data===true)
      //do something use the data

  });
}

addIcons():Observable<boolean>{

  this.Service.getIcons().subscribe(icons => {

    return  return observableOf(true);   
  });

  return observableOf(false);   

}
Run Code Online (Sandbox Code Playgroud)

c_o*_*goo 8

您可以使用RxJS 中的ofswitchMap运算符。

你的addIcons方法变成:

import { of } from 'rxjs';
import { switchMap } from 'rxjs/operators'

ngOnInit() {
  this.addIcons().subscribe(data=>{
    if(data===true)
      //do something use the data

  });
}

addIcons():Observable<boolean>{
  return this.Service.getIcons().pipe(
    switchMap((response) =>{
      // do something with icons response
      // based on some condition return true or false
      return of(true)
    })
  )
}
Run Code Online (Sandbox Code Playgroud)


ale*_*vak 5

addIcons():Observable<boolean>{
  const result = new Subject<boolean>();

  this.Service.getIcons().subscribe(icons => {

    result.next(true);
    result.complete();
  },
  error => {
    result.next(false);
    result.complete();
  });   

  return result.asObservable();
}
Run Code Online (Sandbox Code Playgroud)