首页 > 解决方案 > 有没有比调用多个 ajax 查询更快的方法来比较列表中的项目?

问题描述

我正在一个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");
        }
    });
}

isInMS和函数都会isInES调用以检查学生是否在 3 个用户列表之一中getItemCajax

标签: javascriptajaxlistsharepoint

解决方案


推荐阅读