angularjs - последовательно вызывать функцию, которая выполняет HTTP-запрос ngResource. - PullRequest
0 голосов
/ 25 июня 2018

Это схема выполняемой функции и HTTP-запрос на получение всех записей из таблицы.Эта функция определена в моем контроллере.

$scope.getAllData = function (tableName) {
  var allDataResults = $resource('/getAllDataForTable', {}, {
    save: {
      method: 'POST',
      timeout: 6000
    }
  });
  allDataResults.save($scope.all_data_input, function (response) {
    //Do stuff with response
    }
  });
};

Мне нужно последовательно вызывать эту функцию для разных имен таблиц.Я попытался просто вызвать его дважды, как это.

$scope.getAllData(tableName1);
$scope.getAllData(tableName2);

Второй ответ правильный, но первый неверный.Каждый ответ содержит список, и размер списка второго ответа принудительно задается для первого, что приводит к тому, что ответ является неправильным.Как правильно связать эти 2 запроса почтовых запросов?

1 Ответ

0 голосов
/ 25 июня 2018

Вам нужно вернуть обещание из вашей функции, т.е. e.:

$scope.getAllData = function (tableName) {
  var allDataResults = $resource('/getAllDataForTable', {}, {
    save: {
      method: 'POST',
      timeout: 6000
    }
  });
  return allDataResults.save($scope.all_data_input, function (response) {
    //Do stuff with response
    }
  });
};

Затем вы можете связать свои звонки, используя возвращенное обещание:

$scope.getAllData(tableName1).$promise.then(function() {
  $scope.getAllData(tableName2);
});

Кстати, $resource примеров может помочь вам лучше понять это. Если вам нужно выполнить много связанных обещаний, вы должны посмотреть на $ q.all .

...