用户触发ajax调用时的性能

时间:2015-09-18 14:46:33

标签: javascript jquery ajax knockout.js

在我的SPA网络应用程序中,我有一个树状系统,用户可以使用箭头按钮上下导航。每次加载新页面时,都会触发ajax调用($ .getJSON),获取该页面的内容。



load: function () {
            this.guidArray().forEach(function (currentGuid) {
                $.getJSON("/report/getdata", { guid: currentGuid }, function (data) {
                    var report = { title: data.name, fuid: currentGuid };
                    this.reports.push(report);
                }.bind(this))
                .success(function () { this.numberOfLoadedReports(this.numberOfLoadedReports() + 1); }.bind(this));
            }.bind(this));
        }




如果用户在页面之间快速导航,则会对性能产生影响,因为其间的所有ajax调用也会被触发。取消或以其他方式管理哪些方法或模式,以便只进行必要的呼叫?

1 个答案:

答案 0 :(得分:0)

您可以尝试添加全局变量,并在ajax请求之后(TRUE之后)将其设置为成功函数中的TRUE(默认值为FALSE)和$.getJSON。 。),在调用你的加载函数之前,检查这个变量TRUEFALSE 所以,像

var requestIsPossible = TRUE;
if(requestIsPossible){
load: function () {
            this.guidArray().forEach(function (currentGuid) {
                requestIsPossible = FALSE;
                $.getJSON("/report/getdata", { guid: currentGuid }, function (data) {
                    var report = { title: data.name, fuid: currentGuid };
                    this.reports.push(report);
                }.bind(this))
                .success(function () { 
                  requestIsPossible = TRUE;
                  this.numberOfLoadedReports(this.numberOfLoadedReports() + 1); }.bind(this));
            }.bind(this));
        }}