[英]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.