Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在我的例子中,如何在函数内部调用函数本身_Javascript_Angularjs - Fatal编程技术网

Javascript 在我的例子中,如何在函数内部调用函数本身

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) {

我试图在函数中调用函数本身

基本上,如果第一个请求具有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(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可能不是最终的最佳答案。浏览其他答案;实际问题是原始代码中的语法错误。根据我的经验,转换为回调(至少暂时如此)将有助于解决实际问题。