ひどうきひどうき
6751 ワード
コンセプト
非同期で動作するランタイムを開発した.以下の作業に役立ちます.
構文
3つの構文の1つで非同期ストリームを実現できます.
callback, promise, async/await
コンセプトアレンジ
学習目標
resolve
・reject
・の意味と、then
・catch
・との関係が理解できる.Promise.all
の使い方.async
/await
キーワードを知り、その仕組みを知る.fs
モジュールの使い方がわかります.高次関数
ひどうきよびだし
電話:同期、ブロック(作業を停止し、電話に出る必要がある)
テキスト:非同期、非ブロック(作業を停止せずに後でテキストをチェックできます)
💡 記述者が関数の実行を制御することを許可することは,関数を非同期に実行させることに等しいと考えられる.
なぜ非動機を学ぶのですか?
jqueryのajax通信のように,サーバからデータを受信するアプリケーションを開発する際に非常に有用である.これは、データが非同期である場合、データを収集する前に、何の操作も実行できないエラーが発生する可能性があるためです.
Calbackを使用して非同期化を実現する方法
関数パラメータとしてのコールバック関数は、最終的には関数内でのみ実行できます.
非同期APIがあると言ってください.対応するAPIにコールバック関数を追加します.非同期APIの前後で別の関数が実行されている場合、別の関数が最初に実行され、非同期APIのコールバック関数が実行されます.これにより、非同期実装が可能になる.
// sync
console.log(1);
var data = fs.readFileSync('data.txt', 'utf8');
console.log(data);
// 실행 순서 => 1, 'data.txt' 파일 내 내용
// async
console.log(2);
var data = fs.readFile('data.txt', 'utf8', function (err, data) {
console.log(3);
console.log(data);
})
console.log(4);
// 실행 순서 => 2, 4, 3, 'data.txt' 파일 내 내용
// (node 비동기 모듈 앞뒤에 있는 함수가 실행이 끝나기 전까지 모듈을 실행하지 않는다.)
Event Loop
JSエンジンの構成には、メモリheap、Call Stack、Web API、Callback Queueなどがある.
console.log('first')
setTimeout(function () {
console.log('second')
}, 1000);
console.log('third')
1) console.log(「first」)がCall stackに追加されます.2) console.ログ(「first」)が画面に出力されると、Call stackから削除されます.
3)settimeout APIがCall Stackに追加されます.その後、Web APIに移行し、Call stackから削除します.
4) console.log(「third」)がCallstackに追加されます.(Web APIに移行するsettimeoutは、1秒後にCalback Queueに追加され、コールバック方式で渡される匿名関数「(関数){console.log("second")」になります.)
5) console.ログ(「third」)が画面に出力されると、Call stackから削除されます.
6)コールスタックが空であるかどうかは、イベントループによって引き続きチェックされる.log(「third」)を削除した後、Calback Queueに含まれる匿名関数をCalstackに入れて関数を実行する(console.log(「second」)
7) console.ログ(「second」)が画面に出力されると、Call stackから削除されます.
Reference
この問題について(ひどうきひどうき), 我々は、より多くの情報をここで見つけました https://velog.io/@jonghwan2_y/비동기-Asynchronousテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol