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, время: 07:56. |