javascript - 将事件发送到 XState 中的子服务数组

标签 javascript xstate

我有一个场景,我有一台父计算机和几台可以从父计算机生成的子计算机。

当前设置如下所示:

const parentMachine = Machine({
  context: {
    children: [] //can contain any number of child services
  },
  ...
  on: {
    ADD_CHILD: {
       actions: assign({
         children: (ctx, e) => {
           return [
             ...ctx.children,
             {
               ref: spawn(childMachine)
             },
           ];
         },
      }),
    },
    UPDATE_CHILDREN: {
      actions: ??? //need to somehow loop through children and send the UPDATE event to each service
    }
  }
});

当父机器收到“UPDATE_CHILDREN”事件时,我想更新每个子服务。我知道您可以通过将数组传递给 send 来发送批处理事件。 ,但我希望每个事件也被发送到不同的服务。我只看到一次将它们发送到单个服务的示例。我尝试了几件事,包括以下内容:
UPDATE_CHILDREN: {
  actions: ctx => ctx.children.forEach(c => send("UPDATE", { to: () => c.ref }) //doesn't send 
}

我错过了一些明显的东西吗?这可能吗?

最佳答案

意识到这应该如何在 XState 中工作。

对 child 的引用已经被存储了,所以我们基本上可以直接向他们发送事件而不使用“to”属性:

actions: ctx => ctx.children.forEach(c => c.ref.send("UPDATE"))

关于javascript - 将事件发送到 XState 中的子服务数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59314563/

相关文章:

javascript - 暂停和恢复 setInterval

statechart - Xstate:导致相同状态的不同 Action 和守卫

javascript - 开 Jest - react 自动机 - 未定义不是一个对象(评估 'machine.states' )

reactjs - 如果您发送 React Xstate 中不存在的事件会发生什么?

javascript - 我可以在 React 中跨多个树共享一个组件实例吗?

javascript - 用php和sql编写有关数据库连接的伪代码

javascript - 从网站转换为Web应用程序项目后未定义wcf服务

reactjs - 在 xstate 中模拟调用的 promise

javascript - 如何在angularJS中等到$compile结束

javascript - 了解 React 幕后