6

私はnode.jsを学んでおり、見つけることができる例のほとんどは単純な例を扱っています。私は、現実世界の複雑なシステムを構築し、node.js のイベント ベース モデルが実際のアプリケーションのすべてのユース ケースをどれだけうまく処理できるかを見積もることに関心があります。

私が適用したい一般的なパターンの 1 つは、特定のタイムアウト時間内に実行が発生しない場合、実行をブロックしてタイムアウトにすることです。たとえば、データベース クエリの実行に 30 秒以上かかる場合、特定のアプリケーションでは長すぎる可能性があります。または、ファイルの読み取りに 10 秒以上かかる場合。

私にとって、タイムアウトのある理想的なプログラム フローは、例外のあるプログラム フローに似ています。イベントが特定の事前定義されたタイムアウト制限内に発生しない場合、イベント リスナーはイベント ループからクリアされ、代わりにタイムアウト イベントが生成されます。このタイムアウト イベントには、代替リスナーがあります。イベントが正常に処理されると、タイムアウト リスナーとイベント リスナーの両方がイベント ループからクリアされます。

タイムアウトを処理し、タイムアウトしたプロセスをクリーンアップするための一般的なメカニズムはありますか? ソケットなどの一部のタイプにはタイムアウト パラメータがあることは知っていますが、すべてのイベントに適用される一般的なメカニズムではありません。

4

1 に答える 1

1

現時点では、このようなものはありません(私は知っていますが、すべてを知っているわけではありません)。

私が考えることができる唯一のことは、あなたがどうにかしてそれを自分でリセットすることです。以下に例を示しましたが、スコープに問題があると思います。しかし、解決できるはずです。

var to
function cb() {
    clearTimeout(to)
    // do stuff
}
function cbcb() {
    cb()
}
function cancel() {
    cb = function() {} // notice empty
}
fs.doSomethingAsync(file, cbcb)
to = setTimeout(cancel, 10000)
于 2010-09-28T16:58:22.703 に答える