У меня есть угловое приложение, которое выполняет множество асинхронных вызовов с использованием $ http.get, и у меня есть переменная count в моей области ($ scope.count), которая отслеживает, сколько запросов я сделал и сколько все еще находятся на рассмотрении. Очевидно, что я использую его следующим образом:Параллелизм в Angularjs
- Перед тем, как сделать запрос на $ http.get я увеличиваю счетчик на 1
- Когда я получаю ответ от $ http.get Я уменьшаем счет на 1
Я делаю много запросов, что-то около 2000 запрашивает все одновременно, но значение $ scope.count не возвращается к 0 даже после того, как все запросы выполнены, это всегда больше 0 (всегда выключено на 1 или 2). Я обрабатываю как события успеха, так и ошибки для моего вызова $ http.get, и я уменьшаю счет, когда происходит одно из них.
Так что мне было интересно, хорошо ли угловой/javascript обрабатывать параллелизм? Я думаю, что я запускаю операцию инкремента так много раз (потенциально много одновременно), а значение $ scope.count становится устаревшим/плохим, так как две операции могут одновременно изменять переменную.
unpossible, JavaScript работает однопоточный. могут быть кэшированы. как вы рассчитываете? Потому что это должно быть с [перехватчиком] (http://docs.angularjs.org/api/ng.$http) – calebboyd
Я делаю $ scope.count + = 1 перед каждым запросом и $ scope.count - = 1 после каждого ответа – Marc
Вы можете распечатать начало, успех, ошибку и подсчитать до консоли. Затем наблюдайте, что происходит. – allenhwkim