3

ノードの非同期/コールバック ベースのメソッドをブロッキング/同期メソッドに変換することは可能ですか?

「解決すべき問題がある」というPOVよりも、理論的なPOVに興味があります。

Qなどを介してコールバック メソッドをに変換する方法はわかりますが、呼び出しによって実行がブロックされることはありません。Q.done()

4

3 に答える 3

1

お勧めしませんが、これはある種の忙しい待機を使用して簡単に行うことができます。例えば:

var flag = false;
asyncFunction( function () { //This is a callback
    flag = true;
})

while (!flag) {}

while ループは、コールバックが実行されるまで継続的にループするため、実行がブロックされます。

ご想像のとおり、これを行うとコードが非常に厄介になるため、これを行う場合 (お勧めしません)、非同期関数をラップする何らかのヘルパー関数を作成する必要があります。スロットルなどの Underscore.js の Function 関数に似ています。注釈付きのソースを見ると、これらがどのように機能するかを正確に確認できます。

于 2013-04-03T21:38:52.433 に答える
1

node-syncモジュールはそれを行うのに役立ちます。ただし、注意してください。これは node.js の方法ではありません。

于 2013-04-03T17:59:27.113 に答える