将函数转换为可观察的rxjs

时间:2019-03-04 17:38:26

标签: rxjs

想象我有这段代码

function sayHi(){
  console.log("hi")
}
sayHi();
sayHi();
sayHi();
sayHi();
sayHi();

以上代码将记录hi 5次

但是我想使用debounce运算符,并且每1秒只记录一次。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

关于internal函数的内容:例如

import { interval } from 'rxjs';

const source = interval(1000).subscribe(val => console.log('hi'));

link to docs

-----编辑-----

让我们尝试一下:

hi$将是Subject<void>,我们将订阅他的控制台内容

hi$.pipe(...).subscribe(() => {
  console.log('hi');
});

让我们定义一些函数来调用hi$主题。可以随时随地调用它。

let fn = () => {
  hi$.next();
  // ...
}

最后想到的是过滤器console.log强制它每秒仅运行一次。为此,我建议throttle运营商,debounce停止呼叫订户一段时间,所以:

hi$.pipe(throttle(1000)).subscribe(() => {
  console.log('hi');
});