设定观测变量的值

时间:2017-03-03 08:54:48

标签: algorithm concurrency shared-memory

这个问题更倾向于概念而非特定语言。我有一些"变量"和一些处理程序 - 当变量的值被更改时要调用的函数。它是用javascript实现的,但并不重要。几个处理程序可以监视相同变量的值,并按照它们作为观察者注册的相同顺序调用。在其中一个处理程序中,我应该怎么做才能改变价值?我正在考虑这些方法:

  1. 值无法在" onChange"中更改处理程序 - 例如,MySQL中的触发器可以知道相同的方法。但它很不舒服并且受到限制。

  2. 值异步更改 - 调用所有处理程序,然后在" next tick"值已更改,并再次调用所有处理程序。它可以工作,(我知道我需要关心无限循环)。这种方法的缺点是所有处理程序都被调用两次,这会对性能产生负面影响(使UI闪烁等)

  3. 值同步更改 - 在一个处理程序中更改值时停止处理程序队列处理,然后再次开始处理程序队列处理。优点 - 并非所有处理程序都被调用两次。缺点 - 注册订单很重要。

1 个答案:

答案 0 :(得分:1)

另一种方法是实现两种处理程序:赋值前和赋值后处理程序。只允许预分配处理程序更改值,如果预处理程序更改变量而不重新触发处理程序。在您的情况下,您定义所有可以将值更改为预分配处理程序的处理程序,将其他处理程序更改为分配后。

使用这种方法,每个处理程序只需调用一次。