我一直在Effects.tick
和Time
在我的一個應用程序玩弄,我似乎無法得到我的延遲,它在Time.second
它聲稱是。這幾乎是直接的。據我所知,type alias Time = Float
,並從我的日誌看起來好像是second = 1000
,但即使在記錄的情況下,它也會很快燃燒。對此有明確的解釋嗎?榆樹的時間不準確,是嗎?
2
A
回答
2
Effects.tick
導致某個動作幾乎是瞬間被調用,但被調用的動作會傳遞一個當前刻度值的值。如果您想在使用Effects.tick
時延遲一秒鐘,則必須跟蹤起點並將其與當前時間點的時間進行比較,這就是您可以在Time.second
中添加的位置。
拿這個任意例子(你可以將其粘貼到http://elm-lang.org/try):
import Html exposing (..)
import Html.Events exposing (..)
import Html.Attributes exposing (..)
import StartApp
import Effects exposing (Never)
import Task
import Signal
import Time exposing (..)
app =
StartApp.start
{ init = init
, view = view
, update = update
, inputs = [ ]
}
main =
app.html
type alias Model =
{ lastTick : Maybe Time
, tickEverySecond : Maybe Time
}
init =
({ lastTick = Nothing, tickEverySecond = Nothing }, Effects.tick MyTicker)
view address model =
div []
[ div [] [ text <| "Current tick: " ++ (toString model.lastTick) ]
, div [] [ text <| "Updated every second: " ++ (toString model.tickEverySecond) ]
]
type Action
= MyTicker Time
update action model =
let
everySecond = Maybe.withDefault 0 model.tickEverySecond
getTickEverySecond time =
if time > everySecond + Time.second then
Just time
else
Just everySecond
in
case action of
MyTicker time -> (
{ model | lastTick = Just time
, tickEverySecond = getTickEverySecond time
}, Effects.tick MyTicker)
port tasks : Signal (Task.Task Never())
port tasks =
app.tasks
每update
調用請求一個新的時間信號,所以它只會永遠旋轉。重要的部分是tickEverySecond
只在最後一次更新時間大於1秒前更新。
你問的時間精度。如果你運行這個例子,你會注意到每秒的增量有些近似;它會漂移超過一秒鐘。這不是由於任何潛在的不精確。請記住,Elm的Time
功能是基於Javascript時間和計時器功能的薄單板。該漂移僅僅是由響應定時器信號的運行代碼引起的所有微小延遲的人造物。
相關問題
- 1. 榆樹是不承認名單
- 2. 榆樹 - 下拉式「選擇」屬性不能在榆樹工作
- 3. 榆樹進口
- 4. 在榆樹
- 5. Window.dimensions在榆樹
- 6. 用榆樹
- 7. 扭轉榆樹
- 8. 如何`在榆樹
- 9. 如何在榆樹
- 10. 榆樹:解碼Http.Error
- 11. Random.initialSeed的榆樹種子 - 更喜歡當前時間
- 12. 不能「缺點」的榆樹名單
- 13. 榆樹版18,臨時升級?
- 14. Measure-Command報告不準確的時間?
- 15. 榆樹不推斷沒有什麼值正確
- 16. Excel計算準確時間的時間
- 17. Android上的準確時間
- 18. iPhone上的準確時間
- 19. 榆樹Json請求不起作用?
- 20. 我找不到模塊「Html.App」榆樹v0.18
- 21. 爲什麼榆樹不使用括號?
- 22. 榆樹不匹配視圖列表
- 23. 榆樹路由指定的路線,而不是路徑
- 24. 如何在榆樹畫線?
- 25. 榆樹0.17 Simple Mouse.clicks示例
- 26. 榆樹HTTP API調用
- 27. 榆樹升降功能
- 28. 時間不準確或低效代碼?
- 29. alarmManager設置報警,在準確的時間,而不是分數
- 30. 攝像頭時間不準確,設置曝光時間