我希望我的包停止 meteor 热代码重新加载。我在我的包中这样做是为了实现这一点:
Reload._onMigrate('LiveUpdate', function(retry) {
console.log("RELOADING LIVe UPDATE");
return [false];
});
问题是 Meteor 只会调用一次。我需要调用“重试”函数来再次调用它。
我想要实现的是,每次文件系统发生更改时都会调用上述函数,但 Meteor 实际上不会刷新页面。如何实现?
最佳答案
好的,我自己找到了解决方案。事情是这样的:
// stopping reloads on file changes and calling refreshPage after initial app is loaded,
// i.e after the user has loaded the app, and has changed some file
Reload._onMigrate("LiveUpdate", function() {
Deps.autorun(function() {
Autoupdate.newClientAvailable();
console.log("NEW CLIENT AVAILABLE. YAY!!");
LiveUpdate.refreshPage();
});
return [false];
});
AutoUpdate 包本身做类似的事情。 Meteor 创建并使用一个集合 (ClientVersions) 来记录客户端的更改(服务器也使用类似的方法)。 AutoUpdate package 在计算无效时触发 reload Reload package 并在之后立即停止。因为即使我覆盖了 Reload._reload,我也没有收到任何通知。因此,我运行了自己的响应式(Reactive)计算,并使用 Autoupdate.newClientAvailable()
在有新更改可用时使其失效。我想知道 Meteor 决定仅在一次触发后停止计算的原因是什么。我敢打赌他们这样做有充分的理由。我还没有面对他们。
关于javascript - 如何在每次更改时仍保持 meteor 尝试 Reload._onMigrate 的同时防止 meteor 热重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24778312/