我有一个包装SignalR代理的Angular 1.5服务。当Angular应用程序被销毁时,我想明确地保留用户已注册的所有SignalR组,而不是等待显式SignalR超时。
我知道使用Angular 1.5x控制器,我可以听:
$scope.$on("$destroy", function handler() { ... });
但我不确定如何在服务中“清理”并释放我不再需要的资源。有什么建议吗?
答案 0 :(得分:1)
您可以在服务中定义清洁功能,并在$destroy控制器时调用它。
scope.$on('$destroy', function() { ... });
在角度1.5中,组件中也有$onDestroy。
但是,您不能总是打赌$destroy
将被调用(假设用户杀死了浏览器进程),因此您还需要从服务器端提供一些解决方案。
答案 1 :(得分:0)
服务是Angular中的单例,因此它们没有像方法那样的破坏。 我不熟悉SignalR,但如果他们有取消订阅方法,你应该在不需要听众时调用这个方法。