数年前からWebベースのJavascript(バニラJS、jQuery、Backboneなど)をやっていて、最近Node.jsでいくつかの仕事をしています。「ノンブロッキング」プログラミングのコツをつかむにはしばらく時間がかかりましたが、今ではIO操作などにコールバックを使用することに慣れています。
Javascriptは本質的にシングルスレッドであることを理解しています。Nodeの「イベントキュー」の概念を理解しています。私が理解できないのは、個々のjavascript操作が「ブロッキング」か「ノンブロッキング」かを決定するものです。後のコードで使用するために出力を同期的に生成するために依存できる操作、および最初の操作が完了した後に出力を処理できるようにコールバックを渡す必要がある操作を確認するにはどうすればよいですか?非同期/非ブロッキングのJavascript関数のリストと、同期/ブロッキングの関数のリストはありますか?Javascriptアプリが1つの巨大な競合状態になるのを妨げているのは何ですか?
NodeでのIO操作やWebでのAJAX操作など、時間がかかる操作は非同期である必要があるため、コールバックを使用することを知っていますが、「長時間」と見なされるものを決定しているのは誰ですか?これらの操作には、通常の「イベントキュー」からそれらを削除する何らかのトリガーがありますか?そうでない場合、変数への値の割り当てや配列のループなどの単純な操作と、それらを同期方式で終了することに依存できると思われるものとは何が違うのでしょうか?
おそらく、私はこれを正しく考えさえしていないでしょう。ありがとう!