javascript 中可序列化、可恢复的函数调用,用于跨重启的有状态异步执行

问题描述

免责声明

我意识到这是一个糟糕的主意。这只是我在业余项目中玩弄的东西。这是一个聊天机器人,其中的命令由异步函数(框架约束)处理,有时这些函数包括“等待用户响应”之类的东西。这里的目标是能够在不破坏机器人的情况下重新启动机器人。

进入演出

这里的想法是创建一个类,使我能够编写类似...

type MyState = {
  val: number
  somethingNew: Serializable
}
new StatefulProcess<MyState>()
  .initialState({ val: 0 })
  .addStage('addFive',(state) => {// Immer
    state.val += 5
  })
  .addStage('timesTwo',(state) => {
    state.val *= 2
    state.somethingNew = new MySerializable()
  })
  .run()

然后以这样的方式编写StatefulProcess,在每个阶段成功运行后,将序列化状态(以及最后完成状态的名称)保存到数据库中。然后,如果我部署新版本的机器人,它所做的第一件事就是从数据库获取序列化的待处理进程并在下一阶段开始执行。

我的问题

有什么东西可以处理这种事情吗?你对如何最好地处理这件事有什么想法吗?我正在考虑使用 redux 但这似乎有点矫枉过正。此外,我试图让整个过程与通常的命令处理程序的编写方式相去甚远。我不想开始处理“redux land”的问题。这个想法只是有一个代表“重启后可以恢复的javascript进程”的类

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)