(JS)同期と非同期(1/3)
事前理解:コールバックとプロセス
コールバック
他のコードの受信者として渡される実行可能なコード.受信コードのコードは、必要に応じて直ちにコールバックを実行してもよいし、後で実行してもよい.
表示
に約束
プロセスとは、JavaScriptの非同期処理を処理するオブジェクトです.JAvascriptの非同期処理は、「特定のコードの実行完了を待たずに、まず以下のコードのjavascriptの特性を実行する」ことを意味する.
Premisは主にサーバから受信したデータを画面に表示するために使用される.
表示
プロミスモードでコルバー地獄から抜け出すように、
Promisモードの欠点を克服するためにasync/awaitを用いた.
非同期の理解が容易
ファーストフード店の注文システムと比較して、動機と非動機を明確に説明することができる.
Sync Ordering System
function multiply (a, b) {
return a * b;
}
function square (n) { // 3) squre 함수를 실행하고, squre 함수는
return multiply(n, n); // 4) mutiply 함수를 실행합니다.
}
console.log("Start"); // 1) 제일 먼저 실행되니다.
const result = square(2); // 2) 다음으로 해당 줄이 실행됩니다.
console.log(result); // 5) 해당 코드가 실행이 되고,
console.log("end"); // 6) 앞선 코드 실행문들 모두가 완료된 후 실행됩니다.
Async Ordering System
レジに並んで
私たちの後ろに並んでいるお客様も順番に注文します.
function multiply (a, b) {
return a * b;
}
function square (n) {
return multiply(n, n);
}
console.log("Start"); // 1) 해당 줄이 실행됩니다.
setTimeout(function doSomething () { // setTimeOut은 인자로 주어진 함수를 비동기로 실행합니다. 2) 해당 줄이 실행됩니다. (1초 후에 doSomething 함수 실행예약) 4) 일 초가 지난 후, doSomething 함수가 실행됩니다.
const result = square(2);
console.log(result); // 5)마지막으로 콘솔에 result(4)가 표시된다.
}, 1000);
console.log("end"); // 3) setTimeout의 모든 작업이 완료되기를 대기하지 않습니다. setTimeout은 브라우저에게 예약을 한 후, 그 다음 대기 중인 코드가 실행될 수 있도록 자리를 비켜줍니다. 때문에, 해당 줄이 해당 줄이 먼저 실행된다.
非同期ストリームで実行されるいくつかの関数または機能は固定されています.重要なのは、非同期関数を使用しない限り、作成された通常のJavaScriptは決して突然非同期で実行されません.最も多くは、どの関数が非同期関数であるか、および非同期関数の例を見てみましょう.非同期関数の例(FETCH)
console.log("start"); // 1) 해당 줄이 실행됩니다.
fetch("https://www.naver.com/") // 2) 해당 줄이 실행됩니다. fetch란, 브라우저에게 요청을 보내달라는 주문을 넣는 함수입니다. fetch는 비동기로 동작하기 때문에, 다음 실행문을 진행합니다.
.then((res) => {
console.log("Response ▶︎▶︎▶︎", res); // 4) 요청이 완료되면 응답이 콘솔에 출력됩니다.
});
console.log("end"); // 3) 해당 줄이 실행됩니다.
非同期シリアル進捗とパラレル進捗
// 직렬적으로 진행 (첫 번째 비동기 작업이 모두 완료된 후, 다음 비동기 시작)
setTimeout(function foo () {
console.log("foo complete");
setTimeout(function bar () {
console.log("bar complete");
}, 1000);
}, 1000);
// 병렬 진행 (첫 번째 비동기에 대한 완료를 기다리지 않고 다음 비동기 시작)
setTimeout(function foo () {
console.log("foo complete");
}, 1000);
setTimeout(function bar () {
console.log("bar complete");
}, 1000);
続いて第2話:PromiseReference
この問題について((JS)同期と非同期(1/3)), 我々は、より多くの情報をここで見つけました https://velog.io/@yunsungyang-omc/JS-동기와-비동기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol