我只是想创建一个基本的递归函数,一旦达到某个数字就返回一个结果。但是我一直收到这个错误。任何人都有任何想法吗?
这是我的代码:
GLOBAL = {};
GLOBAL.cnt = 0;
Parse.Cloud.define('recursiveTest', function(request, response)
{
GLOBAL.cnt++;
if(GLOBAL.cnt >= 2) {
response.success(GLOBAL.cnt);
}
request = {};
Parse.Cloud.run('recursiveTest', request, response);
});
以下是完整错误:
{ “代码”:141, “错误”: “{\” 代码\ “:141,\” 消息\ “:\”{\\ “代码\\”:141,\\ “消息\\” :\\ “{\\\\” 代码\\\\ “:141,\\\\” 消息\\\\ “:\\\\”{\\\\\\\\“代码\\\ \\\\\ “:141,\\\\\\\\” 消息\\\\\\\\ “:\\\\\\\\”{\\\\\\\\\\\ \\\\\ “代码\\\\\\\\\\\\\\\\”:124,\\\\\\\\\\\\\\\\“消息\\\\\ \\\\\\\\\\“:\\\\\\\\\\\\\\\”对Cloud Code的递归调用过多\\\\\\\\\\\\\ \\\ “} \\\\\\\\”} \\\\ “} \\”} \ “}”}
答案 0 :(得分:0)
看起来你的函数是无限递归的。也许你想这样做?
Parse.Cloud.define('recursiveTest', function(request, response)
{
GLOBAL.cnt++;
if(GLOBAL.cnt >= 2) {
// added `return` here
return response.success(GLOBAL.cnt);
}
request = {};
// added `return` here
return Parse.Cloud.run('recursiveTest', request, response);
});
在任何情况下,你必须return
在某个时刻终止递归,否则函数将永远运行(或实际上直到你得到太多的递归错误),而不会提供所需的结果。< / p>
答案 1 :(得分:0)
我想出了一些解决方法。它至少在我的情况下起作用:
Parse.Cloud.define('recursiveTest', function(request, response)
{
function doRecursive(cnt)
{
cnt++;
if(cnt >= 2) {
response.success(cnt);
}
}
doRecursive(0);
});