我有以下代码从第三方API获取数据,该第三方API位于 example.com :
$scope.buttonClick = function () {
$http.get('https://example.com').
success(function (data, status, headers, config) {
console.log(data.pagination.next);
for (var key in data.applicants) {
if (data.applicants[key].email == "xxx@example.org") {
console.log('found');
console.log(data.XXX[key].id);
}
}
}).
error(function (data, status, headers, config) {
// log error
});
}
现在它包含data.pagination.next
如果来自第三方的数据可能超过1页,我想递归执行此操作以检查电子邮件ID是否匹配,然后返回if条件中的id,如果有,则上面的代码工作正常一页。
答案 0 :(得分:1)
您应该将检查代码与正在检索的代码分开,并将后者包装在函数中。然后用几个if / elses做几乎一样的。
$scope.buttonClick = retrieveData;
function retrieveData( pageId ) {
var params = { pageId: pageId || 1 };
$http.get('https://zzz.com', params).
success(function (data, status, headers, config) {
var applicantFound = searchApplicantMail( data );
if( ! applicantFound && data.pagination.next ) {
return retrieveData( data.paginantion.nextPage );
}
doSomethingWith( applicantFound );
}).
error(function (data, status, headers, config) {
// log error
});
}
function searchApplicantMail( data ) {
for (var key in data.applicants) {
if ( ! data.applicants.hasOwnProperty(key) ) {
continue;
}
if (data.applicants[key].email == "xxx@xxx.com") {
return data.applicants[key];
}
}
return false;
}