gpt4 book ai didi

没有调用 javascript-state-machine onafterevent

转载 作者:行者123 更新时间:2023-11-29 22:25:18 25 4
gpt4 key购买 nike

我目前使用的是优秀的 'javascript-state-machine'图书馆。但是,对于看起来像 A) 的事件,我有一些看起来像 B) 的转换回调。我有一个类似的“onafterevent”回调,它在其他地方也有效。但是 'onafterEEpart' 没有触发,我不明白为什么。

我是 i) 调用 'my-state-machine.EEpart',它应该在整个转换过程中触发回调。并且 ii) 'onbeforeEEpart' 被调用。所以我不知道为什么这个 onafterevent 没有被调用。

有人以前见过这样的东西吗?提前致谢。

一个)

    esm : StateMachine.create({                               initial:  'Es',                               events: [                                 { name: 'EsE', from: 'Es', to: 'E' },                                  { name: 'EEpart', from: 'E', to: 'Epart' },                                      { name: 'EpartE', from: 'Epart', to: 'E' },                                 { name: 'EEs', from: 'E', to: 'Es' }                               ]

B)

    onbeforeEEpart: (event, from, to, args) ->    ...     onafterEEpart: (event, from, to, args) ->     ...

更新 [2012 年 3 月 23 日;凌晨 2:49]

我尝试从 Epart->E 手动转换,并在 A) 中遇到错误。似乎从 E->Epart 的过渡从未完成。我有一个关于为什么的理论。

在上一个转换之后,我必须将下一个转换附加到点击函数,如 B) 所示。这样做包括使用下划线将我的转换函数重新绑定(bind)到我的状态机。我认为这是导致错误的原因。如果是,是否有正确的方法来传递转换函数以被触发?

谢谢

A)

    Uncaught event EpartE inappropriate because previous transition did not complete

B)

    onafterPreviousEvent: (event, from, to, args) ->      console.log('END Transition from Es->E')      $(my-element)        .bind('click',              { fu: bar },               _.bind(args.data.esm.EEpart, args.data.esm))   # state machine is 'args.data.esm'

最佳答案

好的,我解决了这个问题。原来我有一个返回 StateMachine.ASYNcflags的 onleaveE 事件函数。回调工作流程如下,在调用 onafterEEpart 之前调用 onleaveE 并返回一个 ASYNcflags:

  • onbeforeevent - 在事件发生前触发
  • onleavestate - 离开旧状态时触发
  • onenterstate - 进入新状态时触发
  • onafterevent - 在事件发生后触发

通常,当您返回 StateMachine.ASTNcflags时,您必须手动调用 stateMachine 对象上的 transition()。这很棘手,让我呆了一天左右。希望它能帮助将来的人。

关于没有调用 javascript-state-machine onafterevent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com