angularjs-执行ngResource http发布请求的顺序调用函数

时间:2018-06-24 23:43:21

标签: javascript angularjs http-post ngresource

这是要执行的功能的概述,并发出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 :(得分:1)

您需要从函数中返回诺言,即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
    }
  });
};

然后,您可以使用返回的promise链接您的呼叫:

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

$resource examples可能有助于您更好地理解它。如果您需要管理很多连锁承诺,则应查看$q.all