我需要WHERE
关于响应计算中的Session变量的值,并在值更改时重新运行计算。根据{{3}},此用例适用于become: yes
。到目前为止一直很好,因此我在我的反应计算代码中调用了- hosts: webserver
become: yes
roles:
- your-role
,如下所示:
- name: turn off avahi-cups-reload.override
copy:
src: /etc/init/avahi-cups-reload.override
dest: /etc/init/avahi-cups-reload.override
owner: root
group: root
mode: 0744
become: yes
以前的代码运行良好,但由于某种原因,它停止了这样做。现在(在版本METEOR@1.3.2.4中)我注意到虽然if
的会话值发生变化但是反应计算没有重新运行的问题。
在我试图找出原因的过程中,我用以下代码替换了代码:
Session.equals
哪个有效 - 计算现在可以在预期时重新运行!
任何人都可以说明Session.equals
为什么会有效,而不是if (!Session.equals(key, undefined)) {
// now I know 'key' is defined
...
}
?
可能相关:Session变量的值发生变化,但始终是“已定义”(例如,从一个非空字符串到另一个非空字符串)。这是否足以重新触发计算? IOW,也许key
'聪明'足以知道从一个定义值变为另一个定义值的值,因此它确定计算重新运行不是必需的,这会导致我遇到的问题?
答案 0 :(得分:2)
你实际上已经自己回答了。 Session.equals是一个优化版本,只有在值发生变化时才重新运行计算。现在,由于价值没有从定义的'中改变,因此它不会重新运行计算。