递归函数返回后的函数调用
Function call after recursive function returns
我在一些服务类中有一个递归函数来删除一些json元素,一旦删除它们,我就必须调用为更新注册的回调。
我的代码-
var trimTree = function(){
removeScripts(tree.children).then(function(){
angular.forEach(callbacks, function(callback){
//console.log(callback);
console.log("Calling callbacks");
callback();
});
});
}
function removeScripts(nodes){
for(i=0;i<nodes.length;i++){
if(nodes[i].type == 'script'){
return nodes.splice(i, 1);
}else{
return removeScripts(nodes[i]);
}
}
}
但它给了我错误作为TypeError: Cannot read property 'then' of undefined
感谢
假设removeScripts()
返回Promise,但事实并非如此。removeScripts()
是同步的,所以正常情况下只需在它后面添加语句即可。
您可以尝试:
function removeScripts(nodes){
var deferred = $q.defer();
for(i=0;i<nodes.length;i++){
if(nodes[i].type == 'script'){
deferred.resolve(nodes.splice(i, 1));
}else{
deferred.reject(removeScripts(nodes[i]));
}
}
return deferred.promise;
}
您需要使用递延API。
相关文章:
- 如何记录调用另一个函数的函数的返回值
- 从JSP页面调用Java Script函数未返回值
- 我可以获得用Ajax调用的函数的返回代码吗
- 从函数返回函数而不调用返回的函数
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- node.js for循环在函数调用返回之前进行迭代,从而产生对象问题
- 如何使用一些变量参数从javascript函数调用 asp.net C#函数并从C#函数获取字符串返回
- ajax 调用返回时可以向页面添加新的 javascript 函数吗?
- 使用 ajax 调用返回嵌套函数的值时出现问题
- 从 Javascript 调用 PHP 函数并返回一个数组
- JavaScript - 使用具有 AJAX 调用的函数的返回参数
- .done() 函数在抓取本地 JSON 文件时未在 AJAX 调用返回的承诺上运行
- javascript函数调用返回未定义和页面连续加载
- 分配给变量的javascript函数调用返回未定义的结果
- 递归函数调用返回
- 从函数调用返回对象的函数输出未定义
- 为什么这个函数调用返回一个字符串而不是一个数字
- 从嵌套异步函数调用返回谓词
- 如何在函数内部分配函数调用返回的值[JS]