我需要一些帮助,将下面的函数转换为递归函数。它应该自行调用,直到不再存在特定的http标头为止,然后执行最后两个函数fncParse()
和fncDrawTbl
。我收到错误recfnc is not a function
。
// use gitlab api to fetch json data
// must check response http headers to iterate over all pages
// recursively call the function while there is a 'rel="next"' link header
var filteredJsonData = [];
var parsedJsonData = [];
recfnc = function() {
var req = $.getJSON(url, function(jsondata) {
var hdrlink, linknext, relnext;
filteredJsonData.push(fncFilter(jsondata));
try {
hdrlink = req.getResponseHeader('link').split(',');
relnext = hdrlink.filter(l => l.toLowerCase().indexOf('rel="next"') > -1);
linknext = relnext[0].split('<')[1].split('>')[0];
}
catch (e) { console.log(e); }
if (linknext) {
recfnc(linknext);
}
else {
parsedJsonData.push(fncParse(filteredJsonData));
fncDrawTbl(['Name', 'Issues', 'Hours'], parsedJsonData, '#contentKPI');
}
});
}(url);
[假设recfnc =
只是您的问题中的错误,而不是原始代码中的错误(应该为const recfnc=
),您的函数无法正常工作的原因] >>
您实际存储在recfnc
变量中的内容是函数调用fn(){}(url)
的结果,而不是函数本身的结果。就您而言,recfnc
变量实际上保存着undefined
值。
更改此:
recfnc = function(){}
// to:
(function recfnc(){}(url))