【发布时间】:2019-11-21 09:28:53
【问题描述】:
我正在使用 AngularJS 并且我有一个状态 dashboard 并且控制器请求一个项目数组。
var promise = itemsRestService.fetchAllitems();
promise.then(
function(response){
itemService.sortItems(response);
$scope.dashboardData = response;
$state.go('dashboard.content', {items: response}, {reload: false});
vm.dashboardLoaded = true;
}
)
如您所见,一旦 promise 返回,它会将用户引导至子状态 dashboard.content。
promise 可能需要几秒钟才能解决,如果我在请求中单击导航项以更改状态,我将被定向到新状态,但是当 promise 解决时,它会将我重定向回dashboard 状态(这是预期的)。
问题
如何取消状态 $destroy 的承诺?
【问题讨论】:
-
不能取消承诺(除非您使用像 BluebirdJS 这样的第三方库),但您是否可以显示一个加载器以防止用户在加载时单击导航项,或者在执行之前检查当前视图你的
$state.go? -
这是一个解决方案,但忽略状态变化,当处于另一个状态时,promise 仍然会解决。我将不得不检查当前状态。谢谢
标签: javascript angularjs promise