Javascript 在我的例子中,如何在函数内部调用函数本身
我试图在函数中调用函数本身 基本上,如果第一个请求具有id,它将调用函数本身发出另一个请求 我有点像Javascript 在我的例子中,如何在函数内部调用函数本身,javascript,angularjs,Javascript,Angularjs,我试图在函数中调用函数本身 基本上,如果第一个请求具有id,它将调用函数本身发出另一个请求 我有点像 function test(variable) { var q = $q.defer(); $http({ method: 'get', url: 'myurl.com' }).then(function(returnData) { if(returnData.getNewInfo) {
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(returnData.id).then(function(secondData){
我试图在promise中调用函数本身。不知道如何解决我的问题。有人能帮我吗?非常感谢 试试这个:
function test(variable, callback) {
/*snip*/
callback();
/*snip*/
}
test("foo",test);
修正你的代码缩进,你会看到下面的内容——请看我对这个错误的大括号的评论。因此,函数返回的是未定义的,而不是
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;
}
功能测试(变量){
var q=$q.defer();
$http({
方法:“get”,
url:'myurl.com'
}).then(函数(返回数据){
if(returnData.getNewInfo){
测试(returnData.id)。然后(函数(secondData){
q、 解析(第二数据);
})
}否则{
q、 解析(返回数据)
}
});
}//您可以返回您的$http
呼叫。承诺是可链接的,$http
返回承诺
function test(variable) {
return $http({
method: 'get',
url: 'myurl.com'
}).then(function (returnData) {
if (returnData.getNewInfo) {
return test(returnData.id);
} else {
return returnData;
}
});
}
我投反对票的原因——这不是解决问题——而是取而代之。在更复杂的情况下,这将导致“回调地狱”。是的@Kaspars可能不是最终的最佳答案。浏览其他答案;实际问题是原始代码中的语法错误。根据我的经验,转换为回调(至少暂时如此)将有助于解决实际问题。