gpt4 book ai didi

javascript - 停止 AngularJS 中的 $timeout 更新

转载 作者:行者123 更新时间:2023-11-28 18:40:23 28 4
gpt4 key购买 nike

我有2个 Controller ,都使用相同的更新方法来获取数据:

angular.module('project')
.controller('mainController', function($http, $scope, $timeout, $sce) {
updateData($http, $scope, $timeout, $sce, false);
})

.controller('settingsController', function($http, $scope, $timeout, $sce) {

updateData($http, $scope, $timeout, $sce, true);
})

我的updateData看起来像这样:

function updateData($http, $scope, $timeout, $sce, settings) {
$timeout(function() {
if (settings) {

getSettings($http, $scope);
}
else {
getDataA($http, $scope);
getDataB($http, $scope);
}
updateData($http, $scope, $timeout, $sce, settings);
}, 1000);
}

现在,当刷新主页(使用 mainController)时,我总是收到“null”消息,因为该过程没有完成所有方法调用,并且当切换到另一个站点时(使用 settingsController )加载它需要很长时间,因为来自前一个请求的所有请求都必须首先完成。刷新/切换站点时如何直接“杀死”所有待处理的更新?

最佳答案

  1. 这个实现是错误的。我认为将依赖项传递给开放函数并使用它们不是一个好主意。这可能会产生难以检测的错误。

  2. 您的 updateData 函数是一个资源 killer 。它每秒重复一次,没有限制或控制。

您的代码存在设计问题。您应该重新考虑以标准且有效的方式设计它。

您的问题的答案是 $timeout 返回一个 promise 。您可以使用 $timeout.cancel 方法取消超时。

var timeoutPromise = $timeout(foo(), 1000);

$timeour.cancel(timoeoutPromise);

关于javascript - 停止 AngularJS 中的 $timeout 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197483/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com