例えばjavascriptで、以下のようなDB接続 → レコード取得 → DB切断という関数を順番に走らせた場合、DBに接続が成功する前に、処理が全て走ってしまう可能性があります。

function getRecord(){
  var value;

  dbConnect();         // DBに接続する処理
  value = findRecord(); // レコードを1件取得
  dbDisConnect();      // DBを切断する処理

  return value;
}

このような場合、一般的にはどのように処理の同期を取るのでしょうか?

callbackは関数の実行の順番をコントロールできそうですが、実行した結果が終わるのを待ってくれ無さそうです。

promiseで処理が成功したらresolve()を走らせるように、上手く関数を繋げるように書くのでしょうか?

それとも、setTimeoutで処理を遅らせたりするのでしょうか?

まさか、whileでグルグルして時間稼ぎするとか。。。