NodeJSを使用して、データベースの情報をIDのリストで取得し、オブジェクトの配列を取り込もうとしています。私はこれを同期して処理する必要があります。私は次の関数呼び出しが呼び出される前に終了するのを待つようにこれを行う方法を考え出すことに問題があります。そして、それぞれの反復のすべてがコールバックされるために終了します。NodeJS同期の問題
例:
getInfo();
function getInfo(){
var return_arr = Array();
var ids = getListOfIDs();
// loop through each id getting more info from db
$.each(ids, function(i, v){
return_arr.push(getFullInfo(id));
});
return return_arr;
}
function getListOfIDs(){
// database call to get IDs
// returns array
}
function getFullInfo(){
// database call to get full info
// returns object
}
これは簡単な例ですので、上に行くとJSで場所を取るために必要後処理ジョインが複数あるように、すべての情報を取得するために、単一のクエリは動作しないことを前提としています。また、適切なエラー処理を行っていると仮定します。これは私の例では省略しました。
コールバックでは、コールが同期して処理されることはありません。あなたは約束のコード例を提供できますか? – user6041966
コールバックは、私の理解から同期が確実に処理されるようにします。あなたはちょうど後のもので前のものを呼び出す必要があります。 – zhangjinzhou
もちろん、約束コードは複数のレベルが埋め込まれていなくてもきれいです。しかし、コールバックは同期問題を解決する問題ではありません。 – zhangjinzhou