0

文档 autorun中所述,可用于对被调用函数进行去抖动,因此最后一次调用是我们在一定时间内被调用的唯一调用。

但我不知道如何将它与action使用 a 的 a一起使用flow,有什么例子吗?

例如:

syncMobileToken: flow(function* syncMobileToken(token) {
      self.isLoading = true 
      let response =  yield cli.post("/notifications/sync_mobile_token", {
        token: token,
        device_id: Config.DEVICE_ID,
      })      
      self.isLoading = false 
    }),

上面的例子将如何autorun使用?

4

1 回答 1

0

我不确定我是否完全理解您的问题,但我的假设是您希望syncMobileToken每次token更改时都运行该方法并添加延迟,因此该方法不会在每次按键或其他事件触发器时运行。

如果是这样,那么您可以利用afterCreate模型的生命周期方法

myModel = types.model({}).actions(self => ({
  afterCreate() {

    addDisposer(self, 
      reaction(() => ({
          token: self.token
      }), () => { 
        await self.syncMobileToken(self.token)
      },{
        delay: 200
      })
    )
  }

}))

您需要将反应包装在 addDisposer 中,以便在模型被销毁/删除时停止触发反应。

这是我喜欢的使用方式。我通常autorun不习惯说实话。

如果我的回答不能解决您的问题,请提供更多关于您尝试使用自动运行实现的目标的详细信息。

于 2019-11-14T10:10:11.413 回答