就像docs autorun
中那样,可以用来对被调用函数进行去抖动,因此最后一次调用是我们在一定时间内被调用的唯一调用。
但是我无法弄清楚如何将其与使用action
的{{1}}一起使用,有没有示例?
例如:
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
}),
?
答案 0 :(得分: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
。
如果我的回答不能解决您的问题,请提供更多有关您尝试使用自动运行达到的目的的详细信息。