Javascript 角度+;requirejs:快速刷新页面会导致页面在chrome中停止工作

Javascript 角度+;requirejs:快速刷新页面会导致页面在chrome中停止工作,javascript,angularjs,requirejs,Javascript,Angularjs,Requirejs,在使用angular+requirejs进行开发期间。我遇到了一个奇怪的问题 如果我快速刷新页面(如按F5),几次之后,我将收到以下错误消息,页面不再工作,甚至再次刷新页面,除非清除缓存并在新选项卡上打开页面: Error: $digest already in progress at Error (<anonymous>) at beginPhase (http://www.caoglish.info/angular_bug/assets/vendor/angula

在使用angular+requirejs进行开发期间。我遇到了一个奇怪的问题

如果我快速刷新页面(如按F5),几次之后,我将收到以下错误消息,页面不再工作,甚至再次刷新页面,除非清除缓存并在新选项卡上打开页面:

Error: $digest already in progress
    at Error (<anonymous>)
    at beginPhase (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:8495:15)
    at Object.Scope.$apply (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:8297:11)
    at done (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9357:20)
    at completeRequest (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9520:7)
    at XMLHttpRequest.xhr.onreadystatechange (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9490:11)
    at http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9499:11
    at sendReq (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9333:9)
    at $http (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9124:17)
    at Function.$http.(anonymous function) (http://www.caoglish.info/angular_bug/assets/vendor/angular/angular.js:9267:18) 
错误:$摘要已在进行中
错误地(

如何触发错误:

快速按F5直到它发生


我在angular project上创建了一个问题帖子:

这个问题可能已经死了,但我看到了相同的行为。这绝对不是一个angular问题。这只是一个简单的竞争条件,或多或少是不可避免的。当你点击F5时,浏览器会停止“沙箱”中的一切出于安全原因:IMG内容的标准请求、XHR请求、Angular代码运行的主线程等。它非常快,但不是即时的,如果你努力破坏它,你就会成功

在我看来,这里的根本问题应该是这是否是“坏的”,对我来说,这意味着它是a)创建安全漏洞,还是b)做一些可能破坏重要数据的事情

您可以排除第一种情况,因为只有在按下F5时已经在浏览器中运行的代码才可能尝试利用竞争条件产生的任何边缘情况。如果它已经在浏览器中运行,它可以做任何它想做的事情,因为可以说它已经“在墙内”


您可以排除第二种情况,因为您不应该设计需要100%置信度才能执行下一行代码的Web应用程序。。。因为你知道这永远都不确定。用户可以随时关闭浏览器,一旦你认为你必须以这样的方式编写代码来容忍这种情况。

我并不是说这里可能没有问题。你像疯子一样花了30秒的时间才犯了这个错误。这是它的用途的准确表示吗?按压的次数是随机的。有时多,有时少,有时只按2-3次。此外,这是一个孤立的代码,所以这可能是我需要按更多次的原因。但是在我的项目代码上只按了几次。在开发过程中,我可能会刷新页面以查看结果,有时,我会很快地按F5。如果触发问题,我会混淆我的代码的哪一部分导致了问题。我可以得到一个不到10秒的视频,但视频只是演示了如何重现这个问题。请使用当前的Chrome开发者版本进行尝试。我在Chrome上遇到了一个非常类似的问题。一两周前,它在开发者版本上得到了解决。马厩还是坏的。我找不到报告的问题,但它似乎是一个错误。您的链接已断开。。。想使用JSFIDLE/plunkr吗?感谢您的长时间回复,这证明了我对chromes问题的看法。当时我围绕这个问题做了一些工作,似乎很有效。我使用like script.js?bust=timestamp(tiempstamp总是在变化)强制浏览器每次重新加载所有js文件,尽管我不喜欢这个解决方案。我希望chrome的bug能被修复。