Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中从循环调用的缓慢C#进程正在锁定我的应用程序,直到它完成为止_Javascript_C#_Jquery - Fatal编程技术网

Javascript中从循环调用的缓慢C#进程正在锁定我的应用程序,直到它完成为止

Javascript中从循环调用的缓慢C#进程正在锁定我的应用程序,直到它完成为止,javascript,c#,jquery,Javascript,C#,Jquery,我正在通过应用程序中的Web API控制器对C#进程进行Ajax调用。这是在JQuery循环中完成的。C#过程需要很多时间。当JQuery循环运行时,应用程序被锁定,无法对其执行任何其他操作。代码如下: this.PDFReports = function () { var reports = JSON.parse(localStorage.getItem("reportsInfo")) var reportPDFPaths = []

我正在通过应用程序中的Web API控制器对C#进程进行Ajax调用。这是在JQuery循环中完成的。C#过程需要很多时间。当JQuery循环运行时,应用程序被锁定,无法对其执行任何其他操作。代码如下:

    this.PDFReports = function () {

        var reports = JSON.parse(localStorage.getItem("reportsInfo"))

        var reportPDFPaths = []

        $.each(reports, function (index, r) {

            //No need to render report as PDF if it is already.
            if (r.TypeName != "PDF") {

                var reportid = r.BOReportID
                var parms = r.parms
                var parmslength = Object.keys(parms).length
                var parmstring = ""

                for (i = 0; i < parmslength; i++) {
                    var parmname = parms[i].name
                    var parmvalue = parms[i].value

                    if (parmstring.length > 0) {
                        parmstring = parmstring + "|Name:" + parmname + "," + "Value:" + parmvalue
                    }
                    else {
                        parmstring = parmstring + "Name:" + parmname + "," + "Value:" + parmvalue
                    }

                }

                //Render crystal report as PDF file. 
                var PDFCreateUrl = "/odata/PDFReport"
                PDFCreateAjaxRequest("post", PDFCreateUrl, { ReportID: reportid, ParmString: parmstring })
                                .done(function (result) {
                                    reportPDFPaths.push(result.value)

                                })
                               .fail(function (jqXHR, textStatus, errorThrown) {
                               });

                function PDFCreateAjaxRequest(type, url, data) {
                    var options = {
                        dataType: "json",
                        contentType: "application/json",
                        type: type,
                        data: data ? JSON.stringify(data) : null,
                        async: false
                    };
                    return $.ajax(url, options);
                }

            }
            else
            {
                var ReportID = r.ReportID
                var fullpath = localStorage.getItem("PDFServerPath" + ReportID)
                reportPDFPaths.push(fullpath)
            }

        })


        localStorage.setItem("reportPDFPaths", reportPDFPaths)
    }
this.PDFReports=函数(){
var reports=JSON.parse(localStorage.getItem(“reportsInfo”))
var reportPDFPaths=[]
$。每个(报告、功能(索引、r){
//如果报表已经是PDF格式,则无需将其呈现为PDF格式。
如果(r.TypeName!=“PDF”){
var reportid=r.BOReportID
var parms=r.parms
var parmslength=Object.keys(parms).length
var parmstring=“”
对于(i=0;i0){
parmstring=parmstring+“|名称:“+parmname+”,“+”值:“+parmvalue”
}
否则{
parmstring=parmstring+“名称:”+parmname+“,“+”值:”+parmvalue
}
}
//将crystal报告呈现为PDF文件。
var PDFCreateUrl=“/odata/PDFReport”
PDFCreateAjaxRequest(“post”,PDFCreateUrl,{ReportID:ReportID,ParmString:ParmString})
.完成(功能(结果){
ReportPdfPath.push(结果值)
})
.fail(函数(jqXHR、textStatus、errorshown){
});
函数PDFCreateAjaxRequest(类型、url、数据){
变量选项={
数据类型:“json”,
contentType:“应用程序/json”,
类型:类型,
data:data?JSON.stringify(数据):null,
异步:false
};
返回$.ajax(url、选项);
}
}
其他的
{
var ReportID=r.ReportID
var fullpath=localStorage.getItem(“PDFServerPath”+ReportID)
ReportPdfPath.push(完整路径)
}
})
setItem(“reportPDFPaths”,reportPDFPaths)
}

同步XHR将阻止执行。考虑以异步方式编写这整个代码< PDFRIPONT/<代码>函数,这样就可以避免<代码>异步:false < />代码> ./P>为什么不发送一个(异步)请求中的所有报告?
            function PDFCreateAjaxRequest(type, url, data) {
                var options = {
                    dataType: "json",
                    contentType: "application/json",
                    type: type,
                    data: data ? JSON.stringify(data) : null,
                    async: false // There's your problem
                };
                return $.ajax(url, options);
            }