我是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
。但问题是我得到了第一种方法的响应。但不是在时间。那么,我该如何解决这个问题?
答案 0 :(得分:1)
这些方法应该返回承诺:
$scope.loadreports = function(){
return uploadService.loadReports(...).then(...);
}
$scope.loaddocumentforhighlighting = function(){
return uploadService.getDocumentAsHTML(...).then(...);
}
和链接一样:
$scope.loadreports().then(function () {
return $scope.loaddocumentForHighlighting()
});