@moveOn

Как заставить фронтэнд забирать данные после завершения запроса к БД на сервере?

Есть такой код на angularjs

CPElement.update({id: $scope.elements[elemId].id}, $scope.elements[elemId]).then($scope.calculate());


CPElement - это ресурс. Отправляются данные на сервер. На сервере они сохраняются. После получения ответа от сервера .then() запускает запрос на перерасчет на сервере.

Проблема в том, что ответ с перерасчетом приходит раньше, чем актуальные данные в запросе update применятся в БД.

Мне нужно отправить данные и получить с их учетом результат вычислений. А сейчас оно то успевает, то не успевает.

Серверная часть на yii2. Контроллеры разные для сохранения и для вычислений.

Подскажите куда копать.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@moveOn Автор вопроса
В итоге у передал в calback параметр функции update и заработало.
CPElement.update({id: id}, data,function(){

                    $scope.calculate()
                })
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
1. yii тут не при чем
2. Вы понимаете что then и when это принципиально разные слова?
https://docs.angularjs.org/api/ng/service/$q#when
Ответ написан
rim89
@rim89
программист-велосипедист
Проблема в том, что ответ с перерасчетом приходит раньше, чем актуальные данные в запросе update применятся в БД.

дождаться пока отработает UPDATE и потому уже отправлять ... мб через @amount или SELECT новых данных на уровне запроса к SQL , если используется SQL
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы