特別な場合は、「require」のように、実行をブロックしてより簡単にすることが理にかなっています。Node.JSのデータベースに接続
私は似たような場合があります。DB接続をブロックする方法が必要です。 そして、アプリケーションが開始され、後で再利用するためにグローバルオブジェクトに保存されたときに一度だけ発生するため、パフォーマンスには影響しません。
問題:
- ノードが 'スリープ' メソッドを持っていません。
- イベントループにはいくつかトリッキーがありますが、ブロックする必要がありますが、同時にデータベース接続の処理を行うことができます。
実際に私はすでにジャスミン・ノードからwaitFor
を使用することによって、それをやったが、私はそれのソースを見たとき - それは非常に複雑だとphantomjs C-の拡張機能を使用しています。
そして悲しいことに、簡単なwhile(true){...}
ものは動作しません。たとえば、以下のコードは動作しません。イベントループをブロックし、ノードが待機するイベント(シングルスレッド環境のデッドロックの種類:)をノードで処理できないためです)。
waitsFor = (fun, message = "waitsFor timeout!", timeout = 1000) ->
start = new Date().getTime()
while true
if fun()
break
else if (new Date().getTime() - start) > timeout
throw new Error(message)
しかし、多分それは余分なphantomjs
のような依存関係や複雑なC-拡張せずに、他のいくつかの簡単な方法でそれを行うには何とか可能ですか?
データベース接続が確立されるまでアプリを起動するのはなぜですか? 'db.connect(function(err){... start app here ...});' –
"グローバルオブジェクトに保存して後で再利用できるようになりました。 –