javascript - RxJs 重复事件链

标签 javascript angular rxjs

我有一些冷的 RxJs Observable,我想在某些事件 click$ 发出时刷新并再次从服务器获取数据。

let files$ = param$.pipe(
  param => http.getFolder(param),
  folder => http.getFolderFiles(folder),
  REPEAT_ON(click$)
  takeUntil(this.destroy$)
)

我应该使用什么运算符而不是想象中的 REPEAT_ON 运算符?

我可以用这段代码实现这个

let files$ = combineLatest(param$, click$.pipe(startsWith(undefined))).pipe(
  param => http.getFolder(param[0]),
  folder => http.getFolderFiles(folder),
  takeUntil(this.destroy$)
)

但它闻起来很糟糕,我认为 combineLatest 不适用于我的用例。

最佳答案

combineLatest 没有问题,但我认为您要查找的是 repeatWhen 运算符。

const array$ = Observable.from(["arr1", "arr2", "arr3", "arr4"]).do(console.log);
const click$ = Observable.fromEvent(document, 'click');

array$
    .repeatWhen(() => click$)
    .subscribe();

这是一个例子:https://codepen.io/anon/pen/EdbPoV

关于javascript - RxJs 重复事件链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52814098/

相关文章:

javascript - evaluateJavascript 只在主线程中运行?

css - 当 xhr 请求正在进行时, Angular 2/5 加载指示器

angular - RXJS:跳过由其他可观察对象触发的可观察对象的值

javascript - 如果未在发布请求中登录,则重定向到登录页面

javascript - 提交文件输入数组而不提交表单本身

angular - 如何防止 PWA 在新的 Safari 窗口中打开链接和 Auth0 单点登录身份验证

angular - "Error trying to diff..."的 ng-container 问题

angular - 将 Observable.forkJoin 的结果转换为 Angular 2 中的相应类型

jasmine - 如何测试包含去抖动运算符的可观察对象?

javascript - 如何使用ajax刷新聊天记录