用法:autorunAsync(action: () => void, minimumDelay?: number, scope?)
与autorun类似,autorunAsync希望在最短的毫秒后action不是被同步而是被异步地调用,这时候action将会被执行与观测。但是,在它观察到的值已更改时,action不是立即运行该操作,而是在再次执行该操作之前等待 minimumDelay 毫秒。
如果被观测的值在等待时被多次修改,则action仍然只会被触发一次,因此在某种意义上,autorunAsync实现了与transaction相似的效果。这可能对于那些消耗十分昂贵但又没必要同步触发的操作十分有用,比如与服务器通信时的防抖动。
如果作用域已经被给定了,那么action将会绑定在这个作用域对象上。
autorunAsync(debugName: string, action: () => void, minimumDelay?: number, scope?)
如果autorunAsync的第一个参数是字符串,那么他将被用作调试名称 (debug name) 。
autorunAsync 返回一个取消autorun的处理器.
autorunAsync(() => {
//假设 profile.asJson 返回一个可观察的 Json 格式的数据,
//在每次更改时将其发送到服务器,但在发送之前等待至少300毫秒,
//发送时,将使用profile.asJson的最新值。
sendProfileToServer(profile.asJson);
}, 300);