javascript - Javascript 中的 react 性与事件?

标签 javascript reactive-programming

我正在尝试创建一个清晰的 react 性图及其含义,与 javascript 中的事件对比。

来自维基百科:

// In computing, reactive programming is a programming paradigm orientated     
// around data flows and the propagation of change.

我努力区分事件驱动 UI 的 javascript 中的实际实现可能与“响应式(Reactive)实现”有何不同,希望任何能够对比这些模式的人。

我使用 meteor 已经有一段时间了,所以了解它的上下文,但不是它的基 native 制。

我认为,从本质上讲,它归结为从“ react 性数据源”发布的某种事件或通知,或者受另一个功能的影响,即观察它,每个功能都被设计为对这些事件“使用react”。

非常具体地说,这些实现与发布和订阅定义该对象或它所在的系统为响应式(Reactive)的对象上的事件有何不同?

任何帮助都会很棒。

最佳答案

关键在于它是关于随时间变化的序列,能够传递那个代表对象并使用它,同时它不仅提供传递订阅的方法,还提供操作、转换和整理的方法。

如果您考虑一个数组[1, 2, 3],以及您可以用它做什么,而无需求助于较低级别的内部管理...

arr.map(add1).map(triple).filter(evens).reduce(add, 0);
// with a starting value of 0, add all numbers in arr,
// after they've had 1 added, been tripled,
// and had odd products stripped out

如果你可以说:

div.mouseMoves
   .map(event => ({ x: event.x, y: event.y }))
   .filter(bottomHalfOfBox)
   .forEach(updateView);

或者对 recentPostsnewsfeedUpdatesfriendMessages 做同样的事情?

这就是全部的想法,使用流,它们实际上是数组,其值按时间分隔。

每个库都有不同的东西,不同的包装器,相同方法的不同名称,不同的行为......但目标都是相似的。

您看到的是事件的回调方面不足以满足这种级别的链式组合。

一些其他语言原生(或语法覆盖)支持这种类型的功能。 Javascript,当然不是那么多。 我们需要依赖包装器来实现此行为,而不是依赖于语法。

关于javascript - Javascript 中的 react 性与事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35976426/

相关文章:

javascript - jquery 的 attr() 是异步的吗?

javascript - karma 不执行任何测试

android - 订阅后一次性对象为空

javascript - 如何理解客户端脚本中时区的时钟时间

javascript - jQuery 中的隐藏/显示功能出现问题

Java流休息API

language-agnostic - "lazy evaluation"和 "reactive programming"

c# - Xamarin Forms/ReactiveUI Router-在关闭 subview 后显示 subview 并执行父ViewModel代码

javascript - 捕获所有按键输入,直到以响应式(Reactive)编程方式按下 ENTER

javascript - 如何动态添加 onclick 属性?