$destroy 事件在角度中不起作用

Omk*_*lee 5 scope timeout ondestroy angularjs

$scope.$on('$destroy', function (event){    
        $timeout.cancel(promiseObj);    
    });
Run Code Online (Sandbox Code Playgroud)

如果我位于正在加载的页面上(因为页面包含$http请求,因此需要时间加载数据)并且在加载时,我从导航更改页面,$timeout 不会被删除,并且连续http调用正在进行。你能帮我吗?

Omk*_*lee 1

实际上,问题是 Angular 创建了许多与 PromiseObj 同名的对象。因此,这些对象没有被删除。因此,我创建了一个 PromiseObj[] 数组,并使用 for 循环删除了所有 Promise。;)

$scope.$on('$destroy', function () {    
    for(var promise in promiseObj)
    {
        $timeout.cancel(promiseObj[promise]);
    }
});
Run Code Online (Sandbox Code Playgroud)