【发布时间】:2018-01-12 10:17:38
【问题描述】:
我正在使用$timeout 在以 3 秒延迟 完成第一个函数后调用函数,但问题是我的方法正在完成
例如(有时需要 2 秒、3 秒,有时需要 4/5 秒)
我的第二个函数在第一个函数之前被调用,
有什么可能的方法来防止这种情况,
有没有办法动态设置超时时间,
我只想在我的第一个函数之后调用我的第二个函数
下面是我的代码
$scope.otherTipChecker();
$rootScope.$emit("Loader", { loaded: true });
$timeout(function () {
$rootScope.$emit("OverrideTipDetail", {
OverrideTipDetail: $scope.TipDetail
});
$("#tipEditModal").modal('hide');
$rootScope.$emit("Loader", { loaded: false });
}, 5000);
【问题讨论】:
-
最好先给我们看这段代码
-
为什么你不使用
promise。 $timeout 不是最佳解决方案 -
更新我的问题
-
你需要异步回调;使用
$q服务并遵守承诺。$q.defer()对象会延迟另一个函数的执行,直到第一个函数完成(如果您需要一个接一个地链接多个函数,请使用$q.all()) -
你的 "first" 函数在哪里,完成后,你想延迟调用第二个函数?是
$scope.otherTipChecker();还是回复$rootScope.$emit("Loader", { loaded: true });?
标签: javascript angularjs timeout