コールバックと処理
お久しぶりですが、
ダイヤルバック
ダイヤルバック
コールバックとは、後で実行されるコードです.
一般的な矢印関数では、{}
の部分をコールバックと見なすことができる.
コールバックの非同期処理
イベント中心の言語JavaScriptでは、結果を待たずに複数の関数を入力すると、次のイベントが続行されます.(非同期特性)
ほとんどの場合、JavaScriptを使用するには、サーバからデータをインポートするか、タイマなどの外部APIを使用する必要があります.これは非同期です.
コールバック関数
したがって、下部のコードを入力すると/* test.js : 콜백 함수의 비동기 처리 */
setTimeout(() => {
console.log("< first >");
}, 3000);
setTimeout(() => {
console.log("< second >");
}, 2000);
結果:
先に実行する遅延時間がより短いsecondが見えます.setTimeout(callback, delayTime)
は、パラメータでコールバックと遅延を受信し、遅延後にコールバックを実行する内蔵関数です.
もう一つ分かりやすい例を見てみましょうか?// test4.js : 콜백 함수의 비동기 처리
console.log("1 : setTimeout 실행 전")
setTimeout(()=>{
console.log("2 : setTimeout의 콜백 실행중");
}, 0);
console.log("3 : setTimeout 실행 후")
結果:
setTimeout()
自体は非同期ブラウザが提供するAPI関数であるため、0秒遅延後に実行されるとコールバックキューに入る.どういう意味か分からない場合は、ここをクリックしてください。
コールバックキューの関数は呼び出しスタックがすべて終了した後に実行されるため、setTimeout()
のコールバック関数の2番目のログが最も遅く撮影されることがわかります.
コールバックの同期処理
JavaScriptの計算方法は、内部処理か外部処理かによって異なります.先ほど、外部から導入した場合は同期処理と言いました.内部で行うとは、外部から各種データやAPIをインポートしない(例えば、カスタム関数のみを使用する)場合に行うことである.
カスタム関数
// test3.js : 사용자 정의 함수의 동기 처리
function fakeSetTimeout(callback){
callback();
}
console.log("1 : fakeSetTimeout 함수 만들었음")
fakeSetTimeout(function() {
console.log("2 : fakeSetTimeout 의 콜백함수 실행중 : HELLO");
})
console.log("3 : fakeSetTimeout 실행 종료됨")
結果:
番号順、順番に実行されるカスタム関数が表示されます.
非同期処理から同期処理への変換
非同期処理の場合、同期(=順番)したい場合はどうすればいいですか?// test2.js : 콜백 함수의 동기 처리
setTimeout(()=>{
setTimeout(()=>{
console.log("< second >");
}, 2000);
console.log("< first >");
}, 3000);
結果:
firstが3秒後に実行され、secondが表示されます.
このようにして、コールバックに間欠的なコールバック構造を実装することができます.
コールバック地獄
同期処理のためにコールバックをネストし続けると、ユーザーはコールバック地獄に陥る可能性があります.
この問題を解決するために、ES 6構文からpromise
ES 7である.6以降、async/await
をサポートします.
これは次の授業だ...!!
Reference
この問題について(コールバックと処理), 我々は、より多くの情報をここで見つけました
https://velog.io/@yujiniii/콜백과-처리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
/* test.js : 콜백 함수의 비동기 처리 */
setTimeout(() => {
console.log("< first >");
}, 3000);
setTimeout(() => {
console.log("< second >");
}, 2000);
// test4.js : 콜백 함수의 비동기 처리
console.log("1 : setTimeout 실행 전")
setTimeout(()=>{
console.log("2 : setTimeout의 콜백 실행중");
}, 0);
console.log("3 : setTimeout 실행 후")
// test3.js : 사용자 정의 함수의 동기 처리
function fakeSetTimeout(callback){
callback();
}
console.log("1 : fakeSetTimeout 함수 만들었음")
fakeSetTimeout(function() {
console.log("2 : fakeSetTimeout 의 콜백함수 실행중 : HELLO");
})
console.log("3 : fakeSetTimeout 실행 종료됨")
// test2.js : 콜백 함수의 동기 처리
setTimeout(()=>{
setTimeout(()=>{
console.log("< second >");
}, 2000);
console.log("< first >");
}, 3000);
Reference
この問題について(コールバックと処理), 我々は、より多くの情報をここで見つけました https://velog.io/@yujiniii/콜백과-처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol