【问题标题】:How to log rxjs observable and operator names?如何记录 rxjs 可观察和操作员名称?
【发布时间】:2021-09-03 23:28:22
【问题描述】:

我想复制可观察的依赖关系图以进行时间旅行调试,类似于此示例 (https://youtu.be/HQWnCo_lMJQ?t=74)。

如何访问可观察对象和管道运算符的名称?到目前为止,最初的尝试都没有成功。

例如,在this example 中,点击可以访问这些值,但我还没有找到同时记录maptakeinterval 的方法。

import { interval } from 'rxjs';
import { map, take } from 'rxjs/operators';
interval(100)
  .pipe(
    take(3),
    map((e, i) => i * 2),
    tap(console.log)
  )
  .subscribe({
    next: console.log,
    error: console.error,
    complete: () => console.log('complete')
  });

【问题讨论】:

    标签: rxjs rxjs-observables rxjs-pipeable-operators


    【解决方案1】:

    您可以这样做的一种方法是创建新的运算符。例如,这里是“地图”

    function _map(project: (value: unknown, index: number) => number) {
      return function<T>(source: Observable<T>): Observable<T> {
        return source.pipe(
          tap(() => console.log('map')),
          map(project)
        );
      };
    }
    
    

    看看这个例子:https://stackblitz.com/edit/j7tvss-gboupg?devtoolsheight=33&file=index.ts

    结果是您使用了map 运算符,并且您还插入了一个带有运算符名称的控制台日志。

    您应该查看这篇文章以了解有关创建自己的运营商的更多信息https://netbasal.com/creating-custom-operators-in-rxjs-32f052d69457

    【讨论】:

    • 感谢亚历克斯的可靠答案和示例。很高兴知道没有内置方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2019-10-18
    • 2016-05-17
    • 2017-06-11
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多