一个服务调用的AngularJs输出取决于另一个服务调用

时间:2018-04-04 13:43:47

标签: javascript jquery angularjs html5

我是angularjs的新手,目前我正面临一个问题,就像 -

我正在调用一个服务 -

       if($scope.tab === "1"){
          $scope.loadreports();
          $scope.loaddocumentForHighlighting();
        }
      $scope.loadreports = function(){
        uploadService.loadReports(uploadService.currentFileName, $scope.documentType, jdCurrentFileName)
                .then(function (response) { uploadservice.setreprtdata(response) },function (error) {
                  $scope.loadingReports = false;
                  $scope.errorMessage = error.status + " : " + error.statusText;
                  if (error.status === 401) {
                    loginService.authenticationError();
                  }
    }
Now ,

$scope.loaddocumentforhighlighting = function(){
    uploadService.getDocumentAsHTML($scope.documentType, uploadService.currentFileName)
              .then(function (data) {}, .finally(function ( console.log(uploadservice.getreportdata()) ) {
                $scope.showDocumentReloadPanel = false;
              });
}

现在,这里发生了什么当第一次调用是loadreports时,那么从服务器获取响应需要一些时间。但在那个方法中,我有一套,我想在第二种方法中使用。但在此之前,第二种方法被执行。所以,进入该方法会给我undefined。但问题是我得到了第一种方法的响应。但不是在时间。那么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这些方法应该返回承诺:

$scope.loadreports = function(){
  return uploadService.loadReports(...).then(...);
}

$scope.loaddocumentforhighlighting = function(){
  return uploadService.getDocumentAsHTML(...).then(...);
}

和链接一样:

$scope.loadreports().then(function () {
  return $scope.loaddocumentForHighlighting()
});