ノード.非同期関数


ノードを持つプロジェクトで作業する場合.JSは、いくつかの点で非同期関数を使用する必要があります.特に、データ入出力(I/O -入出力)に関しては.そして、そのために、我々は約束を使用することができます、しかし、彼らは我々のコードを複雑で詳細にすることができます、それで、我々はAsyncを使用して、待って、我々のコードをより簡単で、より美しくします、そして、それは我々が本稿で見るつもりです.

同期・非同期処理?


これらの2つの概念を理解する必要があります:同期処理はシーケンスと順序で発生するものです.キューに続いて、他の非同期処理は、現在の1つが完了した後に開始されます.これは、ファイルとリソースを規則的にロードするブラウザで起こります.
非同期処理は、同時に処理が実行されたとき、以前に開始されたものが終了している間に別の処理が開始されないようにするときです.だから、別の実行している場合でも、プロセスを開始することができます.これは多くのメッセージや電子メールを送信するときに、我々はメッセージを送信することができますが、それは宛先にも到着していないし、我々はすでに作成し、別のメッセージを送信することができます.
ノード.JSは非同期処理を使用しており、例えばPHPのような別の言語と比較すると、これを理解するのはかなり難しいでしょう.次のコードを使用して、データベース内のSELECT、INSERT、UPDATE、その他何かを行うことができます.
$result = $connection->query('SELECT * FROM table_name');

echo $result ;

<rest of the code...>
この方法では、「コードの残り」は、ノードで選択された後に実行されます.JSは次のように使います.
connection.query('SELECT * FROM table_name', function (error, results) {
    console.log(results);
});

<rest of the code...>
「コードの残り」はすぐに実行されるでしょう、「完成する前に」、しかし、私たちは常に処理が行われるとき、接続を閉じる必要があります.でもいつ終わるの?我々は知っているので、我々は問題がある!

約束をする


私たちは約束(自由な翻訳で約束)を使用することができます.言い換えれば、我々はいくつかの時点で満たされると約束をするつもりです、そして、我々は戻りを持ちます、あるいは、我々が完成するとき、何かをすることができます.
データベース接続が既に約束を返すと仮定すると、次のようになります.
connection.query('SELECT * FROM table_name').then(rows=> {
    console.log(results);
});

<rest of the code...>
そして、約束を使用すると、選択が完了すると接続を閉じるという我々の問題を解決するのは簡単です.
connection.query('SELECT * FROM table_name').then(rows=> {
    console.log(results);
}).then(rows => connection.close());

<rest of the code...>
いくつかの約束を行に連鎖させる必要があるなら、コードを読んで、この処理が実際にどのようになるかを理解する問題があります.

AsyncとWaitでコードを改善する


この他の問題を解決するには、ノードに存在するAsyncとWaitを使用できます.バージョン7.6以降のJS.それを使用すると、私たちのコードを簡単に理解しやすいことができます.
コードが簡単に理解されなければならないという考えを持っているなら、これは約束を使用してとても単純ではないかもしれませんが、非同期関数はこのタスクをPHPで動作するように簡単にします.例えば、「コードの残り」は選択が完了したときのみ実行されます.
次のコードを指定できます.
async list() {
const result= await connection.query('SELECT * FROM table_name');

<rest of the code...>
};
用意!私たちは非同期関数(async)を使います、そして、その中で、「コードの残り」は接続時にだけ実行されます.クエリ(' select LETABLE from TABLEHIGN NAME ')を終了します.つまり、結果変数はデータベース内のselectの"wait "( wait it )の結果を受け取ります.

結論


シンプルで、高速!Asyncを使用して待って使いやすさ、書き込み、読みやすい理解する.それはとてもクールなので、我々はasyncを使用して起動すると、私たちは再び約束を使用したくない.