tickは、nodejsイベントループがキュー内のすべてを実行することを決定する実行単位ですが、明示的にprocess.nextTick()
というイベント以外にnode.jsイベントループが新しいチックの処理を開始する原因とは異なります。それはI/Oで待っていますか? CPUバウンド計算はどうでしょうか?それとも、新しい機能を入力するときはいつですか?tickがnode.jsで終わるときに指定するイベントは?
7
A
答えて
0
nextTick
は、現在実行中のJavascriptが制御をイベントループに戻すときに呼び出されるコールバックを登録します(たとえば、実行を終了します)。 CPUバウンド操作の場合、これは関数が終了したときに行われます。非同期操作では、非同期操作が開始され、他の即時コードが実行されたとき(非同期操作自体が完了したときで、イベント・キューからのサービスが終了したときにイベント・キューに入るようなものではない) 。 node.js doc for process.nextTick()
から
:
現在のイベントループターンが完了するまで実行されると、コールバック関数を呼び出します。
これはsetTimeout(fn、0)の単純なエイリアスではなく、効率的には です。イベントループの後続のティックで、追加のI/Oイベント(タイマーを含む)が実行される前に実行されます( )。
いくつかの例:
console.log("A");
process.nextTick(function() {
// this will be called when this thread of execution is done
// before timers or I/O events that are also in the event queue
console.log("B");
});
setTimeout(function() {
// this will be called after the current thread of execution
// after any `.nextTick()` handlers in the queue
// and after the minimum time set for setTimeout()
console.log("C");
}, 0);
fs.stat("myfile.txt", function(err, data) {
// this will be called after the current thread of execution
// after any `.nextTick()` handlers in the queue
// and when the file I/O operation is done
console.log("D");
});
console.log("E");
出力:
A
E
B
C
D
3
process.nextTick()
は、Node.jsのは、新しいダニを開始することはありません。これは、提供されたコードが次のティックを待つようにします。
これはそれを理解するための素晴らしいリソースです:http://howtonode.org/understanding-process-next-tick
を限りダニのためのイベントを取得することと、私はランタイムがそれを提供して信じていません。あなたが「偽」それが好きでした:
var tickEmitter = new events.EventEmitter();
function emit() {
tickEmitter.emit('tick');
process.nextTick(emit);
}
tickEmitter.on('tick', function() {
console.log('Ticked');
});
emit();
:あなたの他の質問のいくつかに答えるために、別のポストは、実証の例外的な仕事をしていません
関連する問題
- 1. 経過イベントv Tickイベント?
- 2. Ember-cliがnode.jsデバッグポートを指定する
- 3. node.js ubuntuネイティブパッケージのインストールでlinux-tick-processorはどこですか?
- 4. チェックボックスのJavascript on tickまたはuntickイベント?
- 5. Node.jsからのネットリクエストを行うときにネットワークインターフェイスを指定する方法は?
- 6. は、didSelectRowAtIndexPathの代わりにtouchイベントをシミュレートすることができます
- 7. fullcalendarでイベントを読み込むときに、開始日と終了日を指定するにはどうすればよいですか?
- 8. SWFが呼び出す可能性のあるイベントを指定することはできますか?
- 9. .aspxで終わるリンクを.ashxにリダイレクトすることはできますか?
- 10. RegEx [とで終わる]
- 11. Angular2キャプチャコンポーネントのonCreateイベントとonDestroyイベントのディレクティブを指定できますか?
- 12. 私はsize_tで動作し、CGFloatで終わることができますか?
- 13. マウスが終わったときのJavascript
- 14. PhoneGapで毎日指定した時間にイベント/コールバックをスケジュールすることができます
- 15. node.jsプロセスを終了させるには?
- 16. イベントの日付を指定する
- 17. ifstream.eof() - ファイルの終わりが実際の終わりに達するまで
- 18. PostScriptが「end end」で終わるとは思いますか?
- 19. クローズで文字列が指定された文字列で終わるかどうかを調べる
- 20. 接尾辞配列を構築する前にPythonで文字列のセンチネルの終わりを指定する
- 21. "onunload"を使わずに同じブラウザ終了イベントをキャプチャできます
- 22. Solr - 用語が "y"で終わるとき検索できません
- 23. cocos2d ccmenuitemは変数にアクセスできない、SIGABRTで終わる
- 24. 指定された文字列で始まり、別の指定された文字列で終わる行をgrepする方法はありますか?
- 25. for_eachで終わりに終わり
- 26. は以前の 'type-name'宣言指定子と組み合わせることができません
- 27. 文字列が ";"で終わるときの部分文字列エラーまたは ""
- 28. イベントが設定されているときのイベント
- 29. ストリングストリームの終わりに検出するとき
- 30. GDBでブレークポイントを指定することはできますか?