我正在一个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
和getItemC
函数都进行ajax
调用,以检查学生是否在3个用户列表之一中