rxjs:如何创建一个Observable,在成功时产生true,在出错时产生false

时间:2017-12-20 14:11:14

标签: rxjs

我想创建一个Observable,订阅另一个Observable并在成功时产生true,在出错时产生false。

这是我的解决方案:

new Observable ((observer: Observer<boolean>) => {
  obs().subscribe (() => {
    observer.next (true);
  }, error => {
    observer.next (false);
  })
});

但我认为如果没有“新的Observable”,必须有一个更简单的解决方案。 类似的东西:

obs().pipe (
  map (() => true),
  catchError(() => of(false))
);

但这只会留下打字稿错误:

错误TS2322:类型'Observable'不能赋值为'boolean |可观察到的”。

类型'Observable'不能分配给Observable'。

输入'boolean | {}'不能赋值为'boolean'。

类型'{}'不能赋值为'boolean'。

我正在使用: rxjs 5.5.2 打字稿2.4.2

2 个答案:

答案 0 :(得分:1)

可能这是导入的问题,现在可行:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/catch';

obs ().map (() => true).catch (() => Observable.of (false));

答案 1 :(得分:0)

您可以尝试捕获异常并返回false

obs().catch(()=> of(false))
     .map(value=>{
         if(!value){
             return false;
         }
         return true;
     );

如果该值不是真值则返回false,如果它是真实的,则返回一个新的observable为真。