gpt4 book ai didi

javascript - 函数式响应式编程相对于事件监听器的优势

转载 作者:数据小太阳 更新时间:2023-10-29 04:25:09 24 4
gpt4 key购买 nike

我听过很多关于函数式响应式编程的信息,因此决定去看看有什么大不了的。通过 bacon.js 文档,主要区别似乎是我没有在组件上设置事件监听器,而是在其上创建事件流,并将事件处理程序传递到流中。换句话说,我真正做的就是将事件处理程序从组件移到事件流中。是吗?如果是这样,这样做的最大优势是什么?

最佳答案

函数式响应式(Reactive)编程 (FRP) 的关键点是句法属性:

The dynamical behavior of a value is specified at declaration time.

例如,考虑一个可以通过按下按钮向上或向下计数的计数器。在命令式风格中,您可能会这样写:

counter := 0                               -- initial value
on buttonUp = (counter := counter + 1) -- change it later
on buttonDown = (counter := counter - 1)

首先,计数器被声明为一个初始值。然后,在代码的后面部分,您更改了该值。现在,如果有人问您“在任何给定时刻,counter 的值是多少?”这个问题,您必须查看引用名称 counter 的代码的所有部分,因为这是可以更改的地方。

相比之下,当使用 FRP 样式代码时,只需查看代码中的一个位置即可回答问题:声明 counter 的位置。例如,在 Haskell 中,您可以将计数器写为

counter :: Behavior Int
counter = accumulate ($) 0
(fmap (+1) buttonUp
`union` fmap (subtract 1) buttonDown)

右侧包含您需要了解的所有信息,以便及时了解 counter 在任何给定时刻的值。特别是,您看到它可以通过 buttonUpbuttonDown 进行更改,仅此而已。您不必筛选代码,寻找计数器可能发生变化的地方,不,查看它的声明并从那里跟进就足够了。

这就是 FRP 代码比基于事件的意大利面条代码更不容易出错的原因。

另见一些初步的 documentation for my threepenny-gui library .

关于javascript - 函数式响应式编程相对于事件监听器的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com