Angularjs 如何执行递归循环?
我有以下代码从第三方API(位于example.com)获取数据: 现在它包含Angularjs 如何执行递归循环?,angularjs,recursion,Angularjs,Recursion,我有以下代码从第三方API(位于example.com)获取数据: 现在它包含data.pagination.next中的分页 如果来自第三方的数据可能超过1页,我希望递归执行此操作以检查电子邮件id是否匹配,然后返回处于If条件的id,如果有一页,上述代码工作正常。您应该将检查代码与检索代码分开,并将后者封装在函数中。然后用一些if/else也可以做同样的事情 $scope.buttonClick = retrieveData; function retrieveData( pageId )
data.pagination.next中的分页
如果来自第三方的数据可能超过1页,我希望递归执行此操作以检查电子邮件id是否匹配,然后返回处于If条件的id,如果有一页,上述代码工作正常。您应该将检查代码与检索代码分开,并将后者封装在函数中。然后用一些if/else也可以做同样的事情
$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;
}
非常感谢giorgio的回答,但我得到了以下错误:“$http未定义”这实际上很奇怪,因为$http服务是一个核心的角度服务。您是否忘记在控制器中提供它,例如angular.module('my.module').controller('MyController',['$http',function($http){//mycode}])代码>?顺便说一句,这些函数应该是您控制器的成员,否则我们很可能确实无法使用。$http
。哦,对不起,我忘记了:X这是我的错误,工作正常:)谢谢,伙计
$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;
}