有没有比调用多个ajax查询更快的方法来比较列表中的项目?

时间:2018-07-19 13:44:59

标签: javascript ajax list sharepoint

我正在一个Sharepoint网站上工作,并且具有JS函数,如果与该项目关联的用户(一个用户可以有多个项目)不再具有访问权限,该函数将从一系列Sharepoint列表中删除项目网站。不幸的是,由于用户的总列表分为3个不同的Sharepoint列表,所以这意味着我必须对每个项目进行3个Ajax调用,以查看用户是否存在于其中。尽管它确实按预期工作,但这会导致整个过程花费很长时间才能执行。有没有比较快速的方法?我应该提到我只能访问共享点列表,而不能访问它们从中上传的sql数据库,并且不能更改列表的组织。

这是我当前的代码(为了项目隐私,更改了一些变量名):

  function clearItems(){
    var tempListname;
    var modalLists = ["CList","AList","VList","WList","GList","LList"];
    for(i = 0; i < modalLists.length; i++){
        tempListname = modalLists[i];
        urlTEMP = "../_api/web/lists/getbytitle('" + tempListname + "')/items?$top=10";
        clearOldStudents(modalLists[i], urlTEMP);
    }
}

var counter = 0;
function clearOldItems(listname, url){
    $.ajax({ //Starts the ajax call
       url: url,
        method: "GET",
        headers: {
            "Accept": "application/json; odata=verbose"
        },
        async: false,
        success: function(data) {
            while(counter<data.d.results.length){
                console.log(data.d.results[counter].username);
                if(!isInES(data.d.results[counter].username) && 
                     !isInMS(data.d.results[counter].username)){
                    getItemC("userlis3",data.d.results[counter].username);
                    if(resultsClub[0] == null){
                        if(listname == "CList"){
                            deleteCItem(data.d.results[counter].Id);
                        }
                        else if(listname == "AList"){
                            deleteAItem(data.d.results[counter].Id);
                        }
                        else if(listname == "VList"){
                            deleteVItem(data.d.results[counter].Id);
                        }
                        else if(listname == "WList"){
                            deleteWItem(data.d.results[counter].Id);
                        }
                        else if(listname == "GList"){
                            deleteGItem(data.d.results[counter].Id);
                        }
                        else if(listname == "LList"){
                            deleteCItem(data.d.results[counter].Id);
                        }
                    }
                }
                counter++;
            }
            counter=0;

             if (data.d.__next) {
                url = data.d.__next;
                clearOldStudents(listname, url);
            } 
        },
        error: function(data) {
            alert("error");
        }
    });
}

isInMSisInESgetItemC函数都进行ajax调用,以检查学生是否在3个用户列表之一中

0 个答案:

没有答案