我可以同步获得可观察的值吗? (角/ ReactiveX)

时间:2016-06-08 09:47:36

标签: angularjs angular reactivex

我的项目中有一个名为isPossible的boolean observable,这是它声明的方式:

  isPossible: Observable<boolean>;

我想添加条件isPossibletrue,但是我想将它添加到其他条件同步评估的地方,这是我知道如何使用值的唯一方法observable是异步管道......就像{{isPossible | async}}一样,但是我需要同步得到它......我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

将Observable视为一种可以随时间返回多个值的Promise。在这种情况下,您将创建发出布尔值的异步流。您对值的反应方式是将您的操作放在流的subscribe上,然后获得真正的价值:

isPossible.subscribe((latestIsPossibleValue: boolean) => {
  if (latestIsPossibleValue) {
    // do something on 'true'
  }
})

您能否进一步了解您所拥有的案例?

答案 1 :(得分:0)

想要同步

时不要放异步
class TimerExpand
        {
            public int counter = 0;
            public System.Threading.Timer threadTimer;
        }


 public static void Temps()
        {

            TimerExpand t_expand = new TimerExpand();

            TimerCallback timerDelegate = new TimerCallback(GetTime);

            System.Threading.Timer timer = new System.Threading.Timer(timerDelegate, t_expand, 0, 1000);

            t_expand.threadTimer = timer;


  }

 public static void GetTime(object etat)
         {
           TimerExpand t_expand = (TimerExpand) etat;
            t_expand.counter++;

        }


 private DateTime actualDate;
 public static Stopwatch sw;

并且最终没有使它成为Observable,只是一个简单的布尔

答案 2 :(得分:0)

您可以isPossible.filter(e => e).subscribe((e) => { ... })

在Rx中,您首先将可观察对象转换为其他可观察对象,例如在这种情况下,我们将同时生成truefalse的isPossible observable更改为仅在true上生成的observable与.filter(e => e)

接下来,您可以订阅observable。 subscribe激活可观察序列。订阅后,订阅中的代码将在每次产生值时执行。