質問: server.address().port; console.log('listening at http://%s:%s', host, port); }); ``` 追記 初回のリクエストは正常なレスポンスデータではなかったです。 data変数のスコープがグローバルだったため、2回目以降は正常に動作している様に振舞っていただけでした。。(汗 失礼しました。 この様な処理の場合、処理の先行、後続関係をどの様に制御したらよいのでしょうか?
回答: すべてのコールバック処理(SQL結果)が完了してからレスポンスを出力する必要がありますので、 Promiseパターンなしに実装するのは危険です。 もしPromiseパターンを使わないのなら、 コールバック数をカウントしておき、コールバック処理に完了カウンタを仕込み、データを溜め込んでいく、setIntervalで定期的にカウンタをチェック、コールバック数と同数になったらタイマー解除、溜め込んだデータを出力開始・・・とか setIntervalだと応答速度がちょっと悪そうなので "info_2"のほうのコールバック側にすべて完了したか判定させるロジックを仕込んで、コールバック完了時にレスポンス出力処理実行・・・とか エラー処理含め、複雑な処理が追加された場合、メンテがどんどん苦しくなります。 ということで、やはりまずはPromiseパターン習得を優先すべきだと思います。 私はDB周りはPromiseでラッピングしまくったライブラリを自作して運用しております。 準備さえ整えば、同期処理のように書けるので頑張ってください。