垃圾收集如何解决mobx-utils中的异步操作?

时间:2017-08-07 22:27:43

标签: javascript garbage-collection mobx mobx-react mobx-utils

我想要一个明确的方法来创建商店,当我知道新的服务数据可用时我可以刷新(例如来自lazyObservable的{​​{1}}),但是可以轻松附加更多计算值和动作函数。

从create-react-app开始,使用此mobx-utils

index.js

每次在控制台中运行import React from 'react'; import ReactDOM from 'react-dom'; import {observable} from 'mobx'; import {observer} from 'mobx-react'; import {asyncAction} from 'mobx-utils'; const flipACoin = () => Math.random() > 0.5; function determineGodliness() { const screwYourRAM = new Array(1000000).fill(Math.random()); return new Promise((resolve) => { setTimeout(() => { resolve([flipACoin(), flipACoin()]); }, 1500); }); } function godStore() { const store = observable({ alpha: false, omega: false, waiting: false, refresh: asyncAction(function *() { this.waiting = true; [this.alpha, this.omega] = yield determineGodliness(); this.waiting = false; }), get isGod() { return this.alpha && this.omega; } }); store.refresh(); return store; } window.store = godStore(); const App = observer(({store}) => <p>{ (store.waiting) ? 'The suspense is killing me!' : (store.isGod) ? 'I am the Alpha and the Omega' : 'I just work here.' }</p>); ReactDOM.render(<App store={window.store} />, document.getElementById('root')); 时,任务管理器都会显示内存使用量增加。有趣的是,使用window.store.refresh()实际上会导致内存使用的振荡,而不是线性爬升。在这两个相互矛盾的情况之间,我对垃圾收集器如何查看此设置感到困惑。

我能做些什么来绝对确定setInterval(window.store.refresh, 3000)最终会被垃圾收集?我所关心的只是从生成器返回的内容,而不是在过渡期间分配的内容。

0 个答案:

没有答案