我们的网络应用程序是使用 AngularJS v1.2.26 构建的,我们正在解决似乎只在较旧的 Android 浏览器(特别是 4.2)上发生的问题...
简而言之,异步事情的发生速度比应有的速度慢 600%。例如,我们显示一条错误消息来响应失败的 HTTP 请求。负责发出请求的服务有一个保存状态消息的变量。然后 Controller 会像这样观察它:
// Status msg ctrl
var statusCtrl = app.controller('statusCtrl', function($scope, updateService, $timeout) {
$scope.message = false;
//watch for status messages
$scope.$watch(function () { return updateService.loadingTroubleMsg; },
function (value) {
$scope.message = value;
}
);
});
在其他浏览器中这工作得很好。 http 请求失败,然后立即出现该消息。在 Android 浏览器(客户端通过 USB 运行)上,大约 20 分钟后会显示该消息。
我有几个理论:
- 这个 promise 需要很长时间才能兑现,
$watch
正在以慢动作播放。- http 请求花了很长时间才超时。
没有明显的错误,其他一切似乎都正常。不幸的是,我没有确切的 USB Android 设备,这使得故障排除变得更加困难。
为什么会发生这种情况?我的任何理论比其他理论更合理吗?欢迎提供有关如何查明真相的任何建议。
最佳答案
结果是#3。我在 $http 配置设置中添加了“超时”限制,它开始正常响应。我不知道为什么这仅在 Android 4.2 上重要。我猜这与缺乏对 promise 的(原生)支持有关。
关于javascript - AngularJS + Android 4.2 : very slow to react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29130227/