我使用 Reflux,通常我在进行 ajax 调用后触发,并且效果很好。出于测试目的,我不需要 ajax 调用,并且我注意到除非我给出 5 毫秒的超时时间,否则触发器将不起作用。这是工作和不工作的例子。
不工作的例子:
window.threadStore = Reflux.createStore
init: ->
@state = @getInitialState()
@fetchThreads()
getInitialState: ->
loaded: false
threads: []
fetchThreads: ->
# ajax call for not Testing, and just trigger for Testing
@state.threads = FakeData.threads(20)
@state.loaded = true
@trigger(@state) # This will NOT work!
这将起作用:
window.threadStore = Reflux.createStore
init: ->
@state = @getInitialState()
@fetchThreads()
getInitialState: ->
loaded: false
threads: []
fetchThreads: ->
# ajax call for not Testing, and just trigger for Testing
@state.threads = FakeData.threads(20)
@state.loaded = true
setTimeout( =>
@trigger(@state) # This WILL work!
, 500)
你能解释一下为什么它不能立即工作吗?应该这样做吗?这是一个错误还是我不明白的东西。