这是now()
mobx-utils实施的修改版本。根据我的理解,当autorun
功能被触发时,"初始"将被记录,然后在1秒后,Date.now()
的值,然后每秒一次又一次Date.now()
。
function createIntervalTicker(interval) {
let subscriptionHandle
return fromResource(
sink => {
subscriptionHandle = setInterval(
() => sink(Date.now()),
interval
);
},
() => {
clearInterval(subscriptionHandle);
},
'initial'
);
}
autorun(() => {
console.log(createIntervalTicker(1000).current())
})
然而,我正在"初始"每秒一次又一次地退出。永远不会记录Date.now()
的值。
似乎在调用sink(Date.now())
时,它只触发自动运行功能,但不会更新current()
返回的值。
我很感激任何建议。提前谢谢。
mobx@3.1.16
mobx-utils@2.0.2
答案 0 :(得分:0)
您的代码会创建一个新的observable,并在每次console.log
执行时将其值传递给autorun
。因此,您总是在浏览器控制台中看到initial
:mobx跟踪对初始可观察对象的更改,但console.log
会在每个反应中收到新的可观察对象。
解决方案:存储对初始observable的引用并重用它
const ticker = createIntervalTicker(1000);
autorun(() => {
console.log(ticker.current())
})