繁体   English   中英

如何在 javascript 中卸载动态导入?

[英]How to unload dynamic imports in javascript?

所以基本上,我有一个 json 文件,它定义了用户登录时要加载的内容。这包括 javascript 文件。 当不同的用户登录时,需要卸载以前的东西而不刷新页面。

我正在使用 javascript 动态导入

 modules[moduleId] = await import(url);

我发现,即使在我将“模块”变量清除为空的 object 之后,动态导入的模块中定义的事件侦听器仍在触发。 我假设在该闭包中定义的大多数其他内容仍然占用 memory 。

现在,如果我像这样滥用登录/注销,我假设我最终会遇到 memory 泄漏问题。 如何确保加载到 object 参考的模块在不再需要时正确卸载?

我在这里使用纯 js,无法访问外部库或工具。

我只能想到一种可能的(相当)好的解决方案。 只需用空的模块覆盖模块即可。 就像,加载将是:

modules[moduleId] = await import(`./${moduleId}.js`);

卸载是这样的:

modules[moduleId] = await import(`./empty_module.js`);

甚至更好:

modules[moduleId] = null;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM