ちょっと前にnode.jsで開発を始めました。最近、ノードの「event loop」と非同期メカニズムに、deepdiveを実行しました。しかし、まだ私は完全にsync and async callbacksの違いを理解していない。Node.js:非同期コールバックvs同期コールバックvs process.nextTick vs setTimeout
この例では、node.js APIから、どの関数が最初に呼び出されるのかわかりません。
maybeSync(true,() => {
foo();
});
bar();
しかし、私たちが持っていた場合:
それは、彼らが常に同期順序で実行されている理由は私にははっきりしていないsyncOrAsync(arg,() => {
if (arg) {
cb(arg);
return;
}
});
syncOrAsync(true, function(result) {
console.log('result');
});
console.log('after result);
、私は後にイベントループで実行する必要があり、コールバック関数をしましたが、スタックが空です(console.log( 'after result')が終了しました)。私はいつも非同期を得るためにprocess.nextTick(cb);
を追加する必要がありますか?そして、process.nextTickとsetTimeout();
の違いは何ですか?
タイマーや外部呼び出しなど、実際には非同期なものがない限り、コードは常に同期します。つまり、すべてのJavaScriptコードのデフォルト状態です。コールバックを追加しても非同期にはなりません。 – adeneo
私はいつも 'process.nextTick()'を追加する必要がありますか? – wizard
いいえ、非同期のものを追加する必要があります。 – adeneo