返回SharePoint List REST递归获取的结果



我有这个函数,但是结果返回undefined。似乎我错过了一些不能满足返回的东西。

我已经尝试了一些事情,但仍然有相同的结果。我错过了什么?

function spGetListColumns(listTitle, siteURL = _spPageContextInfo.webAbsoluteUrl) {
var listGetURL = siteURL + "/_api/web/lists/getbytitle('" + listTitle + "')/fields?$select=Title,TypeAsString,TypeDisplayName,Required&$filter=Hidden eq false and ReadOnlyField eq false";
var getOptions = {
method: 'GET',
headers: new Headers({
'Accept': 'application/json; odata=verbose',
'content-type': 'application/json; odata=verbose'
})
};
var spResults = [];
spGetItems(listGetURL);
function spGetItems(newListURL) {
return fetch(newListURL, getOptions).then(response => response.json()).then(data => {
spResults = spResults.concat(data.d.results);
if (data.d.__next) {
newListURL = data.d.__next;
return spGetItems(newListURL);
} else {
return spResults;
}
}).catch(error => {
console.error(error);
});
}
}

fetch返回的结果是一个promise。我对你的代码做了一点改变:

function spGetListColumns(listTitle, siteURL = _spPageContextInfo.webAbsoluteUrl) {
var listGetURL = siteURL + "/_api/web/lists/getbytitle('" + listTitle + "')/fields?$select=Title,TypeAsString,TypeDisplayName,Required&$filter=Hidden eq false and ReadOnlyField eq false";
var getOptions = {
method: 'GET',
headers: new Headers({
'Accept': 'application/json; odata=verbose',
'content-type': 'application/json; odata=verbose'
})
};
var spResults = [];
return spGetItems(listGetURL)
function spGetItems(newListURL) {
return fetch(newListURL, getOptions).then(response => response.json()).then(data => {
spResults = spResults.concat(data.d.results);
if (data.d.__next) {
newListURL = data.d.__next;
spGetItems(newListURL);
} else {
console.log(spResults);
return spResults
}
}).catch(error => {
console.error(error);
});
}
}

调用spGetListColumns函数

spGetListColumns('List1').then(res=>{console.log(res)})

最新更新