Parse.com错误:对Cloud Code的递归调用太多

时间:2013-07-22 20:05:27

标签: javascript jquery parse-platform

我只是想创建一个基本的递归函数,一旦达到某个数字就返回一个结果。但是我一直收到这个错误。任何人都有任何想法吗?

这是我的代码:

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的递归调用过多\\\\\\\\\\\\\ \\\ “} \\\\\\\\”} \\\\ “} \\”} \ “}”}

2 个答案:

答案 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);
});