You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:10:39