Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs行为主体<;布尔值>;正在发送最后一个值而不是默认值;假;_Rxjs_Observable_Behaviorsubject - Fatal编程技术网

Rxjs行为主体<;布尔值>;正在发送最后一个值而不是默认值;假;

Rxjs行为主体<;布尔值>;正在发送最后一个值而不是默认值;假;,rxjs,observable,behaviorsubject,Rxjs,Observable,Behaviorsubject,我在代码中使用RxJS BehaviorSubject作为一个单例实例,这是我迄今为止的观察结果: 在第一次订阅时,它会向订阅方发送一个默认的“false”值,我认为这是可以接受的 接下来,当我对它调用Next(true)方法时,它会发送正确的值(true)。这也是意料之中的 现在,当在步骤2之后进行新订阅时,它将发送“true”而不是默认的“false” 这就是我被卡住的地方(步骤3)我意识到BehaviorSubject在创建新订阅时发送最后一个值,但我的逻辑要求我在首次创建订阅时接收“fa

我在代码中使用RxJS BehaviorSubject作为一个单例实例,这是我迄今为止的观察结果:

  • 在第一次订阅时,它会向订阅方发送一个默认的“false”值,我认为这是可以接受的
  • 接下来,当我对它调用Next(true)方法时,它会发送正确的值(true)。这也是意料之中的
  • 现在,当在步骤2之后进行新订阅时,它将发送“true”而不是默认的“false”

  • 这就是我被卡住的地方(步骤3)我意识到BehaviorSubject在创建新订阅时发送最后一个值,但我的逻辑要求我在首次创建订阅时接收“false”,而不是使用next()发送的最后一个值。我如何实现这一点?

    如您所述,BehaviorSubject获取初始值(而不是默认值)。对于默认值,可以使用startWith运算符:

    const someSubject=new Rx.Subject();
    const with somedefault=someSubject.startWith('some-default');
    使用somedefault.subscribe(console.log);
    someSubject.next('some-other-value');
    使用somedefault.subscribe(console.log)