繁体   English   中英

如何使此递归代码在node.js中同步执行

[英]How to make this recursive code execute synchronously in node.js

我有一个递归函数,可以在javascript中同步执行,并得到我想要的结果。 但是,当我在node.js中执行相同的代码时,即使在函数完全执行之前,函数的结果也已交付。 有人可以帮助我在node.js中同步执行代码吗?

我也尝试过回调。 但是我可以看到,即使在执行内部递归函数之前,也将返回决赛。

有人可以帮助我让此代码在Node JS中同步工作吗?

var finals = [];

function algo(parentApi)
{
    var i, j, k = 0;
    var parents = [];
    for (j = 0; j < parentApi.length; j++)
    {
        for (i = 0; i < childProjectApiList.length; i++)
        {

            if (parentApi[j].api_tag == childProjectApiList[i].dependent_api)
            {
                parents[k++] = childProjectApiList[i];
            }
        }
        if (parents.length > 0)
        {
            async.map(parents, projectComponent.getApiResult,
                function(err, result)
                {
                    finals = finals.concat(result);
                    algo(parents);
                });

        }
    }
    if (j == parentApi.length)
    {
        return finals;
    }
}

我期望函数在整个递归过程完成后返回final,但它会返回空数组。

尝试这个,

var finals = [];

函数algo(parentApi){var i,j,k = 0,父母= [];

for (j = 0; j < parentApi.length; j++) {
    for (i = 0; i < childProjectApiList.length; i++) {
        if (parentApi[j].api_tag == childProjectApiList[i].dependent_api){
            parents[k++] = childProjectApiList[i];
        }
    }

    if (parents.length > 0){
        async.map(parents, projectComponent.getApiResult, function(err, result) {
            finals = finals.concat(result);
            algo(parents);
        });
    }else if (j == parentApi.length) {
        return finals;
    }
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM