我在a Google Group中找到了对此问题的可能答案,但我想知道它是否正确,如果正确则添加后续问题。< / p>
答案是
每次应用中的全局更新功能因任何原因而运行时, 全局订阅对象也被重新评估,并且效果 经理收到新的当前订阅列表
如果模型被更改subscriptions
,则会调用Time.every second
对Time.every minute
等订阅的影响 - 这是否意味着模型更改时计时器会重置?该怎么办60 - 20 = 40 seconds
- 如果模型在启动后20秒更改,它会在1 minute
中触发,还是会在(a & 0x0000F000) == 0x00003000
中触发?
答案 0 :(得分:2)
您可以通过向每个人添加update
语句来检查何时调用subscriptions
和Debug.log
。 subscriptions
函数在开始时首先被调用(因为将发送到update
的消息可能取决于它)以及每次调用update
之后。
计时器间隔似乎不受后续subscriptions
调用的影响。例如,如果您使用elm clock example,请将订阅更改为
Time.every (10*Time.second) Tick
并在视图中添加一个按钮,将模型值重置为0,无论您何时单击按钮,都会看到勾号仍然以10s的间隔进行。
答案 1 :(得分:0)
TLDR;它将在
1 minute
,中触发,除非您转到订阅 在第一分钟内关闭和开启
每次update
运行时,subscriptions
功能也会运行。
订阅功能本质上是您希望应用订阅的内容列表。
在示例中,您的订阅每60秒生成一次Tick
消息。
您可能期望的行为是:
subscriptions
运行时,您开始订阅“每60秒收到Tick
条消息”。update
函数运行的频率无关紧要。 subscriptions
将会运行,但只要您对Tick
的特定订阅仍然为ON,就可以了。但/ />
Tick
条消息,而这条消息将会触发update
。subscriptions
将再次投放(因为之前调用了update
)有趣的是,如果Tick
的订阅在此过程中被取消然后恢复,会发生什么:
Tick
Tick
被取消Tick
再次启用Tick
消息被触发,并传递给update
函数subscriptions
将再次运行