2017-09-18 12 views
-2

私は、すべてが順番に行ごとに構造化されているPythonの世界から来ていると言ってこれを序文にしたいと思います。NodeJSのどこにでも約束がありますか?

ノードJS端末でコードをテストすると、コード行が順番に入力されるため、正常に動作します。しかし、プログラムを実行すると、ノードJSの非同期性の結果である多くのエラーが発生します。

例:配列を格納するためにmysql呼び出しを実行します。次に、forループを使用してその配列の長さを循環させたいと思います。しかし、プログラムファイルを実行すると、forループを実行しようとしたときに配列が定義されていないため(array.lengthを使用してループを停止しているため)、nodeがエラーを返します。私は、これが私が約束を使用すべきであると考える。

言われているように、Node JSはあらゆるところに約束をしていますか?それとも、私は大きなものを逃していますか?

+0

'for'ループが始まる前に配列が定義されていないのはなぜですか? – guest271314

+0

それだけでなく、nodejs、それは一般的にjavascriptです。設計上は非同期で、コールバックは言語の基礎です。このようなものの周りにあなたの頭をラップするのに問題があるなら、あなたはMDNで始まり、基本原則を学ぶことをお勧めします。それは、関数型言語のパラダイムが、 "java"のようなものだからだと思っている人を混乱させる命令型言語として隠蔽されているが、彼らが何をしているのかについての手掛かりはない。その人にならないでください。 – anu

+2

'それはデザインによって非同期です - いいえ、javascriptは非同期ではなく、単に非同期の関数は非同期です –

答えて

1

必ずしも約束ではなく、コールバックと約束が一般的です。

NodeJSはシングルスレッドであるため、非同期に大きく依存しています。そうしないと、呼び出しによってスレッドがブロックされ、SQL問合せを処理している間に他の作業は実行できなくなります。

非同期コードを同期方式で処理する場合は、async/awaitをチェックするか、yield(ジェネレータを使用)をチェックします。

関連する問題