我试图在函数中调用函数本身。
如果第一个请求具有id,它基本上会调用函数本身来发出另一个请求。
我有类似
的东西function test(variable) {
var q = $q.defer();
$http({
method: 'get',
url: 'myurl.com'
}).then(function(returnData) {
if(returnData.getNewInfo) {
test(returnData.id).then(function(secondData){
q.resolve(secondData);
})
} else {
q.resolve(returnData)
}
});
}
return q.promise;
}
我到了
test(...).then
在此行的控制台中不是函数错误
test(returnData.id).then(function(secondData){
我试图在promise中调用函数本身。不知道如何解决我的问题。任何人都可以帮我吗?非常感谢!
答案 0 :(得分:1)
修复你的代码缩进,你将得到以下内容 - 请参阅我关于迷路支撑的评论。所以函数返回undefined而不是q.promise
。
function test(variable) {
var q = $q.defer();
$http({
method: 'get',
url: 'myurl.com'
}).then(function(returnData) {
if (returnData.getNewInfo) {
test(returnData.id).then(function(secondData) {
q.resolve(secondData);
})
} else {
q.resolve(returnData)
}
});
} // <------- end of function - should be removed?
return q.promise;
}
答案 1 :(得分:1)
您可以退回$http
来电。 Promise是可链接的,$http
会返回一个承诺。
function test(variable) {
return $http({
method: 'get',
url: 'myurl.com'
}).then(function (returnData) {
if (returnData.getNewInfo) {
return test(returnData.id);
} else {
return returnData;
}
});
}
答案 2 :(得分:0)
试试这个:
function test(variable, callback) {
/*snip*/
callback();
/*snip*/
}
test("foo",test);