Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 坚持无限重复的摘要循环大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Angular SPA我正在运行 Angular Loading Bar和AngularJS v1.4.9.

一段时间以来,它已经发生了这样的情况:在应用程序加载后,条形图片在一段时间后卡住了,表明并非所有请求都已完成.另外,我在代码中的console.log()之一已经连续触发,每秒大约1-2次.条形图完成,并且当用户重新加载页面时,console.log正常工作(但不会自行停止).

console.log()设置在附加到ng-disabled指令的函数内,所以我知道它是正在进行摘要周期的指示器.

我使用Chrome作为浏览器,最近我进行了分析运行.
这是我看到的一些屏幕截图:

angularjs – 坚持无限重复的摘要循环

这是一个广阔的视野.如图所示,它首先发生在100ms,然后是400,然后是600,依此类推(我做了3s运行).

angularjs – 坚持无限重复的摘要循环


这是第一个垂直条带.并非所有这些看起来都与此完全相同,但completeOutstandingrequest,timeout和Browser.self.defer方法始终存在. searchDisable和log方法是我们的​​,日志就是我上面谈到的那个.

angularjs – 坚持无限重复的摘要循环


这是另一个用于比较的,但这有点不同 – 它有另一个浏览器方法:self.url.我不确定它是做什么的.

以下是我发现的一些可能相关的问题:

Timeout callback can occur in the middle of a digest cycle in Firefox
$browser.defer ends up triggering changeDetection in zonejs through settimeout

附:我认为这个问题首先是在我们为代码添加一些拦截器以进行一些自动重定向时开始的 – 例如当会话超时并且用户点击某些内容时,他会自动返回登录页面重新登录.

这是拦截器:

interceptor.$inject = ['$rootScope','$q'];
        function interceptor($rootScope,$q) {
            return {
                responseError: function (rejection) {
                    var config = rejection.config || {};
                    if (!config.ignoreAuthModulE) {
                        switch (rejection.status) {
                            case 401:
                                var deferred = $q.defer();
                                $rootScope.$broadcast('event:auth-loginrequired',rejection);
                                return deferred.promise;
                            case 403:
                                $rootScope.$broadcast('event:auth-forbidden',rejection);
                                break;
                        }
                    }
                    return $q.reject(rejection);
                }
            };
        }

        $httpProvider.interceptors.push(interceptor);

解决方法

这个问题已经解决了.

事实证明,在任何未经授权的请求的情况下,上面第11行返回的承诺永远保持未决状态,因为在延迟对象中没有调用.resolve()或.reject().

结果,装载杆的拦截器被阻挡.

我最终完全删除自定义承诺,这解决了问题.

大佬总结

以上是大佬教程为你收集整理的angularjs – 坚持无限重复的摘要循环全部内容,希望文章能够帮你解决angularjs – 坚持无限重复的摘要循环所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。