AngularJS中$http请求阻塞问题:如何实现多请求并发执行?
问题
我尝试过谷歌搜索解决,但没找到办法。现在有一个耗时很长的POST请求,我想在它运行期间每隔一段时间发起GET请求获取处理进度,但目前所有进度查询的GET请求都被排队,要等主POST请求完成后才会执行。
以下是我的请求实现代码(我不擅长Javascript/AngularJS,求帮忙):
$scope.ProgressHttp = function(){ let files = $scope.files; var uFiles = []; for(let i = 0; i < files.length; i++){ uFiles.push({ FileName: files[i].filename, FileToken: files[i].getToken, }) } $http({ url : '@Url.Action("ProgressReport")', method : 'GET', data : { files : uFiles }, headers: afHeaders }). success((data) => { data = data.Data; if(data.Success){ data.Progress.forEach((p) =>{ $scope.files.forEach((f) =>{ if(f.getToken == p.Token) { f.setStatus(p.Status); f.progress = p.Progress; return; } }); }); } }) .error(function(response){ toastr.error("Error occured getting progress"); }) } $scope.ReportProgress = function(files){ progressIntervalHandle = $interval($scope.ProgressHttp,5000); } $scope.processUploadedFile = function(files,metadata){ $scope.processing = true; var uFiles = []; for(let i = 0; i < files.length; i++){ uFiles.push({ FileName: files[i].filename, FileToken: files[i].getToken, FileSize: files[i].data.size, FileType: files[i].data.type }); } $scope.ReportProgress($scope.files); $http({ url : '@Url.Action("ProcessUploadedFile")', method : 'POST', data : { uploadedFiles : uFiles, metadata : metadata }, headers: afHeaders }) .success(function (data) { data = data.Data; if(data.Success) toastr.success("File(s) uploaded", "Success"); else toastr.error("File(s) failed to upload", "Error"); $scope.uploadResults = data.UploadFileResults; if(data.FailedZipFile && data.FailedZipFile.length > 0){ let totalFiles = data.FailedZipFile.length; $scope.downloadFile(data.FailedZipFile[data.FailedZipFile.length - 1],data.FailedZipFile,totalFiles); } $scope.processing = false; }) .error(function(response){ toastr.error("Error occured"); $scope.processing = false; }); }
开发者工具中的网络请求情况如下:
内容的提问来源于stack exchange,提问作者ccStars
相关产品推荐
相关产品推荐

