ホームページ > 記事 > ウェブフロントエンド > NodeJs非同期プログラミングの意味を深く理解する
意味:
非同期コード例:
console.log('1'); setTimeout(()=>{ console.log('2秒后再执行...'); },2000); console.log('end');プログラム実行後の出力結果:
1
Ende
2 数秒後に再度実行します...
概要: コードは実行中に順次実行されますが、コールバック関数が実行されると、コールバック関数は非同期に置かれます。コード実行領域にあるため、最初に実行されることはありません。コードが実行された場合は、その後、1 つずつ実行し、非同期コード実行領域に入れます。
同期されたコードラインの場合:
for(let i=0;i<10;i++){ console.log(i); } console.log('end');プログラム実行後の出力結果:
0123456789
end
概要 : 同期コードでは、for ループの実行時間がどれだけ長くても、次のコードは完了するまで待ってから実行されます。
解決策: コールバック関数のネスト、Promise、await、および非同期構文シュガーが同期になる
const fs=require('fs') const path =require('path') let p1=path.join('1.txt') let p2=path.join('2.txt') let p3=path.join('3.txt') fs.readFile(p1,'utf8',(err,data)=>{ if(err) throw err console.log(data) fs.readFile(p2,'utf8',(err,data)=>{ if(err) throw err console.log(data) fs.readFile(p3,'utf8',(err,data)=>{ if(err) throw err console.log(data) }) }) })Promise コードを使用する:
// new promise 的作用:让异步代码马上执行 const fs=require('fs') function readFile(path){ return new Promise((resolve,reject)=>{ fs.readFile(path,'utf8',(err,data)=>{ resolve(data) }) }) } let p1=readFile('1.txt') let p2=readFile('2.txt') let p3=readFile('3.txt') p1.then(result=>{ console.log(result) return p2 }).then(result=>{ console.log(result) return p3 }).then(result=>{ console.log(result) return p3 })await および async 構文のシュガー コードを使用することもできます:
const path=require('path') const fs=require('fs') let p1=readFile('1.txt') let p2=readFile('2.txt') let p3=readFile('3.txt') var readfile=(path)=>{ return new Promise((resolve,reject)=>{ fs.readFile(path,'utf8',(err,data)=>{ resolve(data) }) }) } async function exec() { await readfile(p1).then(result => console.log(result)) await readfile(p2).then(result => console.log(result)) await readfile(p3).then(result => console.log(result)) } exec()[推奨:
node.js ビデオ チュートリアル ]
以上がNodeJs非同期プログラミングの意味を深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。