小编Sac*_*hin的帖子

RxJS,为什么fromEvent()为每个订阅注册一个新事件?

假设我们有以下代码

const clickEvent$ = fromEvent(document, 'click').pipe(
    pluck('target')
);

clickEvent$.pipe(
    filter(node => node.id === 'button1')
).subscribe(() => {
    console.log('Button 1 clicked!');
});

clickEvent$.pipe(
    filter(node => node.id === 'button2')
).subscribe(() => {
    console.log('Button 2 clicked!');
});
Run Code Online (Sandbox Code Playgroud)

当我查看调试器中注册的事件时,我发现文档上注册了两个单击事件。当 的订阅数量增加时clickEvent$,注册到文档的事件数量也会随着每次订阅而增加。

调试器截图

相比之下,无论我向switch语句添加多少个案例,下面的代码都只注册一个事件。

document.addEventListener('click', (event) => {
    switch (event.target.id) {
        case 'Button1':
            console.log('Button 1 clicked!');
            break;
        case 'Button2':
            console.log('Button 2 clicked!');
            break;
    }
});
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:-

  • 为什么每个对 clickEvent$(或任何 DOM 事件流)的订阅都会向文档添加一个新事件。
  • 当有 100 个或更多订阅时,它如何影响性能
  • 有没有办法解决这个问题,只将一个事件侦听器添加到文档中。

这是我对热和冷可观察量的了解

  • 默认情况下,从 DOM 事件创建的所有可观察序列都是热门且共享的。
  • 对于 Hot observable,订阅者仅从订阅时开始接收事件。而在冷可观察的情况下,订阅者会收到可观察可以产生的所有事件。
  • share() …

javascript rxjs

5
推荐指数
1
解决办法
2306
查看次数

oauth2 应该使用驼峰命名法吗?

所以我试图在nestjs中实现一个oauth2服务器,并且我一直在阅读规范[RFC 6749]
在规范中,所有查询参数名称甚至json响应都使用snake_case之类。

access_token
refresh_token
client_id
client_secret
redirect_uri
expires_in
Run Code Online (Sandbox Code Playgroud)

问题是,我的代码库的所有其余部分都使用camelCase,并且对一堆与oauth 相关的类使用snake_case 会使它们与代码库的其余部分不一致。

那么,我应该将所有 oauth 参数更改为驼峰命名法还是会被视为“不符合规范”。

javascript oauth-2.0 typescript nestjs

2
推荐指数
1
解决办法
1642
查看次数

标签 统计

javascript ×2

nestjs ×1

oauth-2.0 ×1

rxjs ×1

typescript ×1