首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在流操作中使用autorun?

如何在流操作中使用autorun?
EN

Stack Overflow用户
提问于 2019-11-14 00:05:59
回答 1查看 165关注 0票数 0

就像在docs中一样,autorun可以用来对被调用的函数进行去抖动,所以最后一次调用是我们在一定时间内唯一被调用的函数。

但是我不知道如何在使用flowaction中使用它,有什么例子吗?

例如:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2019-11-14 18:10:11

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

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

代码语言:javascript
复制
myModel = types.model({}).actions(self => ({
  afterCreate() {

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

}))

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

这是我首选的使用方式。老实说,我通常不使用autorun

如果我的回答不能解决你的问题,请提供更多细节,说明你试图使用自动运行实现的目标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58841091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档