Angularjs 路由更改后销毁$http成功/错误代码段
问题可以在这里看到:Angularjs 路由更改后销毁$http成功/错误代码段,angularjs,http,angular-ui-router,q,Angularjs,Http,Angular Ui Router,Q,问题可以在这里看到: 我运行route1,我有一个$timeout函数。我快速切换到route2,然后route1的延迟代码显示出来。我想销毁$timeout函数中运行的所有代码,在实际情况下,这是一个$http服务请求,并显示来自以前路由的错误消息。这里的解决方案是:先清理后清理 向控制器和指令添加拆卸代码 控制器和指令在销毁之前发出一个事件。在这里,您有机会拆除插件和侦听器,并执行垃圾收集 订阅$scope.$on('$destroy',…)事件 所以,不是这个(有) 我们应该这样做: c
我运行route1,我有一个$timeout函数。我快速切换到route2,然后route1的延迟代码显示出来。我想销毁$timeout函数中运行的所有代码,在实际情况下,这是一个$http服务请求,并显示来自以前路由的错误消息。这里的解决方案是:先清理后清理 向控制器和指令添加拆卸代码
控制器和指令在销毁之前发出一个事件。在这里,您有机会拆除插件和侦听器,并执行垃圾收集
订阅$scope.$on('$destroy',…)事件
所以,不是这个(有)
我们应该这样做:
controller: function($scope, $timeout) {
var removeTimer = $timeout(function() {
alert("Hey I'm message from route 1!");
}, 5000)
$scope.$on('$destroy', function(){
$timeout.cancel(removeTimer);
console.log('all cleared')
});
}
不说-$http已取消。。。它迟早会从服务器上发出
关键是,如果repsonse出现时(在.then()
的内部)可能会触发任何重影操作,我们应该清除它们或检查状态是否已消失
选中它返回一个承诺
,可以通过调用取消
方法来销毁该承诺
//save the link to a promise
$rootScope.dataRequestPromise = $timeout(function() {
alert("Hey I'm message from route 1!");
}, 5000);
//resolve a promise
$rootScope.dataRequestPromise.cancel()
谢谢为了获得更好的文档,在angular中取消$http请求的答案如下:如果这有帮助,那就太好了,先生!享受
UI路由器
,很棒的工具;)
//save the link to a promise
$rootScope.dataRequestPromise = $timeout(function() {
alert("Hey I'm message from route 1!");
}, 5000);
//resolve a promise
$rootScope.dataRequestPromise.cancel()