背景: 最近在看 Rxjs 的入门教程,看到 Observable.subscribe(observer), 第一反应是看到 Observable 去订阅 observer ,但这显然和框架本身表达的意思不一样,应该是 observer 去订阅 Observable 才对。让我来写这样的 api ,我感觉就会写成 Observable.beSubscribedBy(observer )了==
可能是我孤陋寡闻吧,感觉 A.runAction(B)这样的语法,一般都是 A 作为主语;但是 Rxjs 这个场景好像是 A 作为宾语?还有其他类似的例子吗?还是说我本身的理解就是错的
英语相当不行,也不太了解 Rx api 设计背后的规范,还请各位海涵 Orz
1
humbass 2022-07-15 18:22:48 +08:00
大部分操作都可以用 ES6 的 PROXY 直接解决。
Rxjs 实际上是早期 写给 JAVA 这类后端程序员在用数据同步框架。 |
2
MakHoCheung 2022-07-15 20:38:26 +08:00
响应式框架这里确实比较让人迷惑,按道理是订阅者去订阅发布者的,之前看过一个 stackoverflow 的帖子专门讨论这个,但是忘了内容
|
3
charlie21 2022-07-15 21:01:08 +08:00
Observable.subscribe(observer)
这里的 observable 可以是 of() 的返回值,它代表一个(可以被订阅的)内容发送器 subscribe() 调用时刻就是开始时刻 通常的用法是 subscribe(data => { 这里直接处理 data }) 至于 lz 说的这个问题,它这里的 observer 是迭代器模式里的 “迭代器 (iterator)”:迭代器具有 next 方法,可以一次一次读到数据,故而有异步的意味 however, 迭代器这个东西在编程语言里往往是蕴含在流程控制里了,在同步编程直接 for 循环就 OK 了 不需要声明一个 iterator 再调用它进入循环;在异步编程里直接 subscribe 就 OK 了 不需要声明一个 iterator 再调用它来激活订阅。具有迭代器意味的东西都被隐藏起来了 迭代器模式和观察者模式 https://hijiangtao.github.io/2020/01/13/RxJS-Introduction-and-Actions/ |
4
secondwtq 2022-07-16 00:45:17 +08:00
要按照 SVO 的规则去套的话,很多都说不通的
比如 list.add(element),其实是 "add element to list",list 是双宾语之一,主语是啥?不知道 非要给这个神秘的主语一个名字的话,那就叫“有关部门”好了。觉得不够接地气的话可以用“系统”,这个词简直就是挨踢领域的“有关部门”。 还有什么 mutex.lock(), timer.stop(),都不能细想的 然后再看 Rx 源码里面怎么写的: https://github.com/dotnet/reactive/blob/85f1eb7c53e27cccdbeee3e0b044916168843fcc/Rx.NET/Source/src/System.Reactive/ObservableBase.cs#L21 > Subscribes the given observer to the observable sequence. |
5
AllenHua 2022-07-16 09:13:18 +08:00
Observable.subscribe(observer)
英语里词根后缀 able 代表有什么样的能力,主语 Observable 表达的应该是具有观察能力的一类事物,有多种实现(所以没有写成 observer ),是主语。 subscribe 很明显是动词 observer 也很明显是宾语,是名词。 |