私はa JavaScript libraryに取り組んでいます。特に、非同期的に反復できるシーケンスのmap/reduce関数を提供しています。非同期の反復処理にはprocess.nextTickまたはsetImmediateを使用する必要がありますか?
helpful soul on GitHubは、Node.jsに対して、できるだけ早く非同期の反復を行うには、process.nextTick
を使用することを推奨します。 (ライブラリは現在、すべての環境でsetTimeout
を使用していますが、私は理解できませんが、それは最適ではありません)。ノードに関してはとても経験がないので、この方法の仕組みを読んでいました。良い選択かどうか。
the answer to another question on SOによると、おそらく明らかに先私に悪いようです保留中のI/OイベントのジャンプnextTick
この場合のsetImmediate
を使用する方が理にかなっているようです。
これはthe official Node v0.10.0 announcmentに、いくつかの発言によって裏付けられているように見える:v0.10で
は、
nextTick
ハンドラは、右のJavaScriptにC++ から各呼び出しの後に実行されます。つまり、JavaScriptコードがprocess.nextTick
を呼び出した場合、コードが で完了するとコールバックが発生しますが、の前には、がイベントループに戻ります。
私は正しく、シーケンスを非同期的に反復するには、setImmediate
で行う必要がありますか?またはnextTick
はここでより良い選択ですか? (いずれの場合も、明確な説明がはるかに高く評価されるだろう、なぜ。)
「非同期の繰り返し」が必要なのはなぜですか。 –
あなたは、アイテムごとに高価な処理を適用する必要があるデータ項目のリストが長いとします。 'nextTick' /' setImmediate'を使用することにより、他のコードを各処理ステップの間に実行させることができる。 HTTP要求への応答、または例えばGUIとのユーザーの対話。 – flow