簡體   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