gre*_*reg 99
所以它实际上相当直接,在基本层面上涉及两种类型的函数:
创建反应上下文的函数(反应函数)
使响应上下文无效的函数(使函数无效)
可以兼顾两者的功能.(我谎称有3个)
当你调用reactive function它时,它会在context全局创建一个meteor存储,并为其reactive function订阅invalidation回调.传递给反应函数的函数或从其中运行的任何函数都可以是invalidating function并且可以获取当前函数context并将其存储在本地.这些函数可以随时在数据库更新或简单的计时器调用中使其无效context.然后原件reactive function将接收该事件并重新评估自己.
以下是使用流星函数的一步一步(注意Tracker.autorun曾经被称为Deps.autorun):
Tracker.autorun(function(){
alert("Hello " + Session.get("name"));
});
Session.set("name", "Greg");
Run Code Online (Sandbox Code Playgroud)
contextcontext失效事件context首次在该函数中运行.context作为当前活动的全球存储contextreactive function又是ainvalidating functioncontext并将其内部与键"name"关联当这些函数返回时,meteor会清除活动的上下文全局变量
Session.set是另一个能够使a无效的函数context.
context与由关键字"name"关联的Session创建的所有s 无效contexts在失效时运行其失效回调.context(这是Session.get的设计,而不是失效回调必须做的事情)contexts现在运行他们的无效回调.context再次设置.整个实施实际上是相当简单的,以及,你可以在这里看到:
https://github.com/meteor/meteor/blob/master/packages/tracker/tracker.js
和它是如何工作的一个很好的例子可以在这里找到:
https://github.com/meteor/meteor/blob/master/packages/reactive-dict/reactive-dict.js
反应性编程实际上并不是流星或JS特定的,
你可以在这里阅读它:http://en.wikipedia.org/wiki/Reactive_programming
| 归档时间: |
|
| 查看次数: |
7791 次 |
| 最近记录: |