Javascript 什么';在mobx状态树中,从同一模型的另一个动作调用一个动作是一种很好的做法吗?

Javascript 什么';在mobx状态树中,从同一模型的另一个动作调用一个动作是一种很好的做法吗?,javascript,mobx,mobx-state-tree,Javascript,Mobx,Mobx State Tree,我试图将多个函数封装在一个函数中 我有一个这样的模型: constcookmodel=types.actions(self=>({ 与名厨交谈:()=>{ //与副厨师长交谈 }, 谈话等待者:()=>{ //业务逻辑 }, TalkTo供应商:()=>{ //业务逻辑 }, runTalkRoutine:()=>{ //现行代码 const root=getRoot(self) root.talkToSousChefs() root.talkToVendors() root.talkToWai

我试图将多个函数封装在一个函数中

我有一个这样的模型:

constcookmodel=types.actions(self=>({
与名厨交谈:()=>{
//与副厨师长交谈
},
谈话等待者:()=>{
//业务逻辑
},
TalkTo供应商:()=>{
//业务逻辑
},
runTalkRoutine:()=>{
//现行代码
const root=getRoot(self)
root.talkToSousChefs()
root.talkToVendors()
root.talkToWaiters()
//最佳做法是什么?
}
}))

runTalkRoutine
中包装这些操作的最佳方式是什么?

这样做,但我会直接使用
self

  runTalkRoutine: () => {
    self.talkToSousChefs()
    self.talkToVendors()
    self.talkToWaiters()
  }
如果您的任何操作是异步的,您可以使用
yield

如果要自动完成,可以将
runTalkRoutine
移动到另一个操作块

const CookModel = types.actions(self =>({
  talkToSousChefs:() => {
    // talk to sous-chefs
  },
  talkToWaiters: () => {
    // business logic
  },
  talkToVendors: () => {
    // business logic
  }
})).actions(self => ({
  runTalkRoutine: () => {
    // here you will have autocomplete on self
    self.talkToSousChefs()
    self.talkToVendors()
    self.talkToWaiters()
  }
}))