2017-07-17 21 views
-2

私はNodeJSを初めて使用していますが、わからないことがあります。ノードとJavaScriptの非同期

Nodeの基本機能は非同期ですが、JS自体は(setTimeoutを使用して)行います。なぜPromiseのような機能がNodeの前に存在しなかったのですか?

@ EDIT:Christophの回答から、JSとNodeは今日似ていることを理解しています。したがって、両方とも非同期非ブロッキングI/Oですか?

ありがとうございます。

+0

ブラウザで 'setTimeout'がどのように動作するか(https://stackoverflow.com/a/29391634/2476755)対[in]ノード(https://stackoverflow.com/a/10767807/2476755) – royhowie

+0

試してくださいこの短いビデオを見てください:https://www.youtube.com/watch?v=8aGhZQkoFbQそれはnodejsのために何を意味するかについて少し詳しく説明するかもしれません。 –

+0

質問を編集して、適切な回答を特定するのに十分な詳細を持つ特定の問題に限定してください。一度に複数の異なる質問をしないでください。 – Quentin

答えて

2

APIが最近ちょうどjavascriptコアに追加されたのは、ノードとは関係ありません。それは言語開発そのものの一部です。

Javascriptは、ブラウザDOMを操作するための簡単なスクリプト言語として開始しました。 2週間以内にBrendan Eichによって95年に開発されました。これは、あなたが今日持っている機能のほとんどが存在しない場合には、それを意味します。例えば。 XMLHTTPRequestは、現代のすべてのウェブサイトのコアは2000年まで導入されていませんでした。その当時、多くの人々はまだまだ派手なテキストエフェクトを作成するための素晴らしい仕組みと考えていましたが、

ブラウザ戦争の粉塵が落ち着き、javascriptがフラッシュとjavaよりも勝利を収めた後、ベンダーは実際に協力しなければならないと合意し、すべてのブラウザが厳格なWeb標準を遵守し、 (HTML、CSS、EcmaScript)が大幅に向上しました。それで、javascriptは多くの新機能を得ました。

javascriptが成功した理由は、「なぜクライアント側のスクリプティングにのみjavascriptを使用するのですか? - 2009年にRyan Dahlは、JavaScriptコードをサーバー側で実行するためのJavaScriptランタイム環境であるNode.jsを作成しました。

これは、コア "browser javascript"と "nodejs"が実際にECMAScriptをベースにしており、シングルスレッド非同期実行と同じ原理で実行されることを意味します。両方とも、worker threadsを発するオプションがあります。 setTimeoutのような基本的な機能は、ブラウザとノードではほとんど同じです。

しかし、ブラウザには、Webページのレンダリングとユーザーとのやりとりを行うためのカスタムオブジェクトがあり、厳密にはサンドボックス化されていますが、ノードにはサーバー側の言語基本的にブラウザに存在する場合はセキュリティリスクが発生します。

+0

私はそれを理解していますが、JSの非同期動作はNodeの前に存在しましたか?それはインスピレーションですか?そして、なぜBluebirdのような図書館がNodeJsで書かれたのですか?ご回答いただきありがとうございます。 –

+0

@ Quoc-HaoTran NodeJSはjavascriptなので、すべてのパラダイムはブラウザのjavascriptと同じです。 BluebirdはNodeJSには書かれていませんが、javascriptで書かれたnodeノード用のライブラリです。私は私の答えを編集しました、私はそれが今より明確であることを願っていますか? – Christoph

+0

ありがとうございます、今はっきりしています。もう1つ質問してもいいですか?どうやってJSで非同期関数を書くことができますか? –

関連する問題