ホームページ > ウェブフロントエンド > jsチュートリアル > 【Node.js】同期と非同期の違い

【Node.js】同期と非同期の違い

帅杰杰
リリース: 2020-05-13 16:00:11
オリジナル
196 人が閲覧しました

ファイル操作に Node.js を使用するには、まず require('fs') を使用してファイル システム テンプレートを読み込みます。非同期メソッドの最後のパラメータは、完全なコールバック関数 (コールバック関数) です。コールバック関数に渡されるパラメータは通常、メソッド自体に依存しますが、最初のパラメータは常に例外 (err) です。メソッドが正常に実行されると、最初のパラメータは null または未定義になります。同期メソッドを使用して実行すると、例外が即座に発生します。 try または catch を使用して例外を処理し、エラー情報を表示できます。

tmp フォルダーに hello ファイルがある場合の非同期メソッドの例を示します。

このコードは tmp ディレクトリ内の hello ファイルを削除します。削除が成功すると、削除の成功情報がコンソールに表示されます。

引入fs模块
const fs=require("fs");
//异步操作读取文件
fs.unlink('./tmp/hello',(err)=>{
    if(err) throw err;
    console.log('成功删除hello文件');
});
ログイン後にコピー

非同期メソッドを使用して同じ機能を実現することもできます。

引入fs模块
const fs=require("fs");
//同步操作读取文件
fs.unlinkSync('./tmp/hello');
console.log('成功删除hello文件');
ログイン後にコピー

非同期操作メソッドは実行の成功を保証できないため、コード実行中のファイル操作の順序は非常に重要です。

例: 次のコードはエラーを引き起こします

//重命名hello文件为world文件
fs.rename('./tmp/hello','./tmp/world',(err)=>{
  if(err) throw err;
  console.log('renamed complete');
});
//获取world文件的信息
fs.stat('./tmp/world',(err)=>{
  if(err) throw err;
    console.log(`stats:${JSON.stringify(stats)}`);
});
ログイン後にコピー

fs.stat は fs.rename の前に実行されます。正しい方法は、コールバック関数を使用して実行することです。

プログラム実行中に例外を処理するためのコールバック関数の正しい使用法は次のとおりです:

fs.rename('./tmp/hello','./tmp/world',(err)=>{
    if(err) throw err;
    fs.stat('./tmp/world',(err,stats)=>{
        if(err) throw err;
        console.log(`stats:${JSON.stringify(stats)}`);
    });
});
ログイン後にコピー

注: 大規模なシステムでは、非同期メソッドを使用することをお勧めします。同期メソッドを使用するとプロセスがロックされます。同期メソッドと比較して、非同期メソッドはパフォーマンスが高く、高速で、ブロッキングが少ないです。

以上が【Node.js】同期と非同期の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート