Наш веб-приложение построено с AngularJS v1.2.26 Мы диагностирование проблем, которые, кажется, только произойдут на старых браузерах Android, в частности, 4,2 ...AngularJS + Android 4.2: очень медленно реагируют
Короче говоря, асинхронные вещи происходят на 600% медленнее, чем должны. Например, мы показываем сообщение об ошибке в ответ на неудавшийся запрос HTTP. Служба, отвечающая за выполнение запроса, имеет переменную, содержащую сообщения о состоянии. Затем контроллер наблюдает так:
// 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 минут.
У меня есть несколько теорий:
- Обещание принимает очень много времени, чтобы быть решен,
$watch
является happing в замедленном движении.- HTTP-запрос принимает повторно долгое время до таймаута.
Нет видимых ошибок, и все остальное, кажется, работает. К сожалению, у меня нет точного устройства USB Android в моем положении, что затрудняет устранение неполадок.
Зачем это произошло? Являются ли какие-либо из моих теорий более правдоподобными, чем другие? Любые советы о том, как добраться до основания, приветствуются.
'обещания' являются очень дорогим« синтаксическим сахаром »для приложений JS. Почему бы не сделать его более естественным? – Thevs