Javascript 在AngularUI路由器中,未解决的承诺泄漏吗?
我正在使用angular UI路由器,我想知道是否有人知道使用Javascript 在AngularUI路由器中,未解决的承诺泄漏吗?,javascript,angularjs,memory-leaks,angular-ui,angular-ui-router,Javascript,Angularjs,Memory Leaks,Angular Ui,Angular Ui Router,我正在使用angular UI路由器,我想知道是否有人知道使用resolve时未解决的承诺是否会泄漏。我们的用例是,在某些状态下,我们需要进行一些检查,然后在加载原始状态之前转换到不同的url 我们处理这个问题的方法是在resolve中使用$location检查和切换url,并留下一个未解决的承诺。未解决的承诺用于防止加载原始状态的控制器和模板(否则它们会抛出错误) 所以我的问题是,这种留下未解决承诺的做法是否会导致泄漏?我意识到另一种选择是设置一个长的$timeout来解决承诺,但如果没有必要
resolve
时未解决的承诺是否会泄漏。我们的用例是,在某些状态下,我们需要进行一些检查,然后在加载原始状态之前转换到不同的url
我们处理这个问题的方法是在resolve
中使用$location
检查和切换url,并留下一个未解决的承诺。未解决的承诺用于防止加载原始状态的控制器和模板(否则它们会抛出错误)
所以我的问题是,这种留下未解决承诺的做法是否会导致泄漏?我意识到另一种选择是设置一个长的
$timeout
来解决承诺,但如果没有必要,我希望避免它。您需要解决或拒绝承诺。我建议URL切换将在$stateChangeError
事件侦听器中进行,该侦听器将因拒绝承诺而触发。您可以在拒绝([data])
中将要转到的位置传递给侦听器
超时后将拒绝的某些承诺(模拟服务器调用)
这将处理拒绝
app.run(function ($rootScope, $state) {
$rootScope.$on('$stateChangeError', function (e, to, toParams, from, fromParams, error) {
if (error.type === 'redirect') {
$state.transitionTo(error.location);
}
});
});
app.run(function ($rootScope, $state) {
$rootScope.$on('$stateChangeError', function (e, to, toParams, from, fromParams, error) {
if (error.type === 'redirect') {
$state.transitionTo(error.location);
}
});
});