【问题标题】:$timeout after method completion方法完成后的 $timeout
【发布时间】: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


【解决方案1】:

添加超时只是一种解决方法。你需要实现承诺。欲了解更多信息,请阅读下文。

Using promises in javascript

【讨论】:

    猜你喜欢
    • 2020-01-27
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多