gpt4 book ai didi

angularjs - 奇怪的 Angular 异常 : [$rootScope:inprog] null already in progress

转载 作者:行者123 更新时间:2023-12-02 01:19:26 25 4
gpt4 key购买 nike

AngularJS 1.5.9 出现了一个非常奇怪的异常

[$rootScope:inprog] null already in progress



以下是引发此异常的源代码:
function beginPhase(phase) {
if ($rootScope.$$phase) {
throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase);
}

$rootScope.$$phase = phase;
}

beginPhase() 用“$apply”或“$digest”调用。

我的问题是:
  • $rootScope.$$phase 为空时如何输入“if”?

  • 任何帮助将不胜感激。

    最佳答案

    回答你的问题 $rootScope.$$phase 可以设置为 “空” (字符串)这将导致抛出此错误。

    我不确定你是如何捕捉到这条消息的,但 Sentry 为我报告了这一点,而且我从一群用户那里得到了大量的异常。

    所以为了减少the spam我做了一个函数,它将从异常中删除堆栈,并清除 $rootScope.$$phase ,这有望防止第二次发生:

    function exceptionHandler(){
    const error = Error;
    const nullMessage = "[$rootScope:inprog] null already in progress";

    function exception(message){
    if(message.indexOf(nullMessage) === 0){
    const $rootScope = exceptionHandler.$rootScope;
    if($rootScope) $rootScope.$$phase = null;

    const exception = new error(nullMessage);
    exception.stack = "";
    return exception;
    }

    return new error(message);
    }

    Error = exception;
    }

    exceptionHandler(); // If it's not run AngularJS will use the original Error constructor, the one we're decorating

    然后在 angular.run 中注入(inject) $rootScope 并将其设置为函数的属性:
    angular.run(["$rootScope", function($rootScope){
    exceptionHandler.$rootScope = $rootScope;
    }]);

    我的假设是一个扩展将 $rootScope.$$phase 设置为“null”,但是在安装了与我的一个用户相同的扩展之后,没有发生异常。

    Star on GistHub

    关于angularjs - 奇怪的 Angular 异常 : [$rootScope:inprog] null already in progress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982853/

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