【问题标题】:Rxjs create an observable that emits when a function is calledRxjs 创建一个在调用函数时发出的 observable
【发布时间】:2020-06-03 03:51:35
【问题描述】:

我可能遗漏了一些简单但无法从文档中完全解决的问题。我只是想要一个函数,当被调用时会在 rxjs observable 上发出一个值。

伪代码:

const myFunction = () => true //or whatever value
const myObservable = ... emit true whenever myFunction is called

...use myFunction somewhere where it being called is a useful event so 
observers of myObservable can process it

使用 rxjs 调用函数时发出值的标准模式是什么?

【问题讨论】:

标签: rxjs rxjs-observables


【解决方案1】:

你需要一个Subject 来获得https://www.learnrxjs.io/learn-rxjs/subjects

这是文档中重新编写的示例:

import { Subject } from 'rxjs';

const myObservable = new Subject<number>();

const myFunction = () => {
  subject.next(1);
  subject.next(2);
}

myObservable.subscribe({
  next: (v) => console.log(`observerA: ${v}`)
});
myObservable.subscribe({
  next: (v) => console.log(`observerB: ${v}`)
});

// ...use myFunction somewhere where it being called is a useful event so 
myFunction();

通常,您甚至不需要myFunction。拨打subject.next() 就足够了。

【讨论】:

    【解决方案2】:

    您需要使用Subject

    
    const subject = new Subject(); // a subject to notify
    const myObservable = subject.asObservable();
    
    const myFunction = () => {
      subject.next(true);
    };
    
    myObservable.subscribe(console.log);
    
    myFunction();
    myFunction();
    myFunction();
    
    

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2018-01-18
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      相关资源
      最近更新 更多