Promise как сделать синхронным?
Доброго времени суток, форумчане,
Как выйти из ситуации $q.when() .then -> if allItems return allItems else return $http.get(...) .then -> Полезные действия..., чтоб сохранить promise и синхронность его выполнения? Проблема в том, что даже, если массив существует, вызов "Полезные действия..." происходит асинхронно, что в свою очередь вызывает моргание содержимого в виджете. Может кто знает как выполнить promise синхронно? |
Цитата:
Цитата:
|
Костыль по быстрому накидал
angular.module 'KeepTeam.Common' .service 'SynchroQ', ($rootScope) -> _evalAsync: null isSynchroOn: false synchronousOn: -> unless @isSynchroOn @isSynchroOn = true @_evalAsync = $rootScope.$evalAsync $rootScope.$evalAsync = (callback) -> callback?() synchronousOff: -> if @isSynchroOn @isSynchroOn = false if @_evalAsync $rootScope.$evalAsync = @_evalAsync @_evalAsync = null и в коде promise = $q.when() if allItems SynchroQ.synchronousOn() promise.$$state.status = 1 promise.then -> if allItems return allItems else return $http.get(...) .then -> SynchroQ.synchronousOff() Полезные действия... Это выглядит очень костыльно и по хорошему, чтоб решить задачу придется сделать модифицированный сервис $q |
О, мои глаза :D Что ты делаешь? Обещания созданы быть асинхронными.
|
Часовой пояс GMT +3, время: 09:18. |