Glimmer VM中的“基于拉功能的反应式程序”是什么意思?

问题描述

正如我在本文中看到的概念“基于拉式的功能反应程序”:https://engineering.linkedin.com/blog/2017/06/glimmer--blazing-fast-rendering-for-ember-js--part-2

据我所知,“基于拉”意味着我们必须使用常规的轮询方式来根据状态的最新值检查和更新UI。但是我认为,如果应用程序具有很多状态并且实际上大多数时候不经常更改,则可能会浪费很多“轮询”,甚至可能导致应用程序运行效率低下。

所以,我认为这里应该有我想念的东西,我怎么理解呢?

尽管VM体系结构是一种建模渲染的新颖方法,但VM的初始执行会设置参考和修订标签子系统,这使我们能够为用于更新UI的基于拉式功能反应式程序(FRP)建模。实际上,这意味着没有观察者或订阅的概念可以在UI中保持值的更新,而是让模板中的后备值自由变化。目前,最简单的概念化此系统的方法如下所示:

解决方法

我强烈推荐克里斯·加勒特(Chris Garrett)的blog posts on this。他做了更全面的解释工作,但是push vs pull反应性并不是要定期轮询更改,它更类似于命令式与声明式编程。它将负责对状态变化做出反应的责任推到消费者(拉)上,而不是将通知状态变化的应用程序的责任放在推子上(推)。