Выполнить код после обратного вызова ngResource

0

У меня есть функция внутри моего контроллера для создания ngResource

app.controller 'CalculationsCtrl', ($scope, Calculation)->

  $scope.save = ()->
    $scope.busy = true
    Calculation.create($scope.calculation,
      (successResult)->
        console.log ("sucess")
      , (failResult)->
        console.log ("failrue")

    console.log("code after callbacks")
    $scope.busy = false

Я хочу выполнить код ниже console.log("code after callbacks") после выполнения .create callbacks.

Я попытался использовать. .then но похоже, что ngResource не поддерживает его.

Calculation.create(...).then is not a function.

Что такое эквивалентность .then для ngResource?

  • 0
    почему бы просто не добавить свой код ниже console.log("code after callbacks") ?
  • 0
    @levi это может быть выполнено до обратного вызова. Обратные вызовы асинхронны.
Показать ещё 1 комментарий

3 ответа

0
Лучший ответ

Calculation.create(...).then is not a function. возвращается, потому что обратные вызовы возвращают "strings" (из console.log).

Обратный вызов должен возвращать ответ сервера.

app.controller 'CalculationsCtrl', ($ scope, Calculation) ->

  $scope.save = ()->
    $scope.busy = true
    Calculation.create($scope.calculation,
      (successResult)->
        console.log ("sucess")
        successResult
      , (failResult)->
        console.log ("failrue")
        failResult
    ).$promise.then(
       function(succes){$scope...}, 
       function(fail){$scope...}
     )
0

Экземпляр $resource (в вашем случае Calculation) имеет свойство $promise которое вы можете использовать. .then как обычно:

Calculation.create($scope.calculation).then(function (response) {
    ...
});

Последний пример в документах также показывает вам, как это делается.

0

Угловой ресурс $ возвращает обещание, которое вы можете использовать.

Calculation.create().$promise.then( function( response ) {
    console.log("success");
}, function( error ) {
    console.log("error");
);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню