08. TIL (callback function, promise,async)
JavaScriptコールバック関数の概念を学習する時間.
今はまだ混同されている部分がありますが...一生懸命勉強しましょう.🔥
[DREAMコード講義を参考に創作した!]
以降、私が渡した関数を読み込みます.
✔¥もっと上品に言えば?
パラメータを介して関数を渡し、関数内部で実行する関数!
javaは同期され、アップグレードから作成順に実行されます.
アップグレード:var、機能の宣言. コールバック関数はarrow関数に変換され、1行として表すことができます! 1)同期コールバックと非同期コールバック同期コールバック: を直ちに実行非同期コールバック settimeoutを使用して、印刷する文とdalayの時間を指定できます.(1000秒は1秒、2000は2秒!)
objectは、非同期処理を簡素化するのに役立ちます をcallback関数の代わりに使うのは役に立ちますか?乱発するとcallback地獄のように...複雑なコードになる可能性があります. の状態(状態)と結果(結果)を知ることが重要です! 生産者と消費者の違い ステータス:保留中->フル(正常に解決)または拒否済み(失敗) 1) Producer新規承諾の作成時に自動的に実行
ex) 時間の作業が必要です.ファイル を非同期で読み出すネットワーク動作.関数は、成功した送信と失敗した送信の結果 を含む.
ユーザがネットワーク要求を要求した場合にのみ、不要な通信が発生する. 2) Consumer - then,catch,finally . then
:正常な実行を約束した場合、
resolveの値はパラメータとして入力されます.
同じ承諾を返し、出力をキャプチャすることもできます.値を渡すこともできるし、非同期承諾 を渡すこともできる. . catch
:拒否時転送値 .finally
:成功するかどうかにかかわらず、 ex)基本形状
接続承諾の形態.概念を直接実施し、確立しましょう.
ex) 4) Error handlingの承諾を利用して、誤った解決方法を提出することができます! 3つの承諾を返します.
1秒ごとに3秒出力するように指定します
上部エラーを処理するためにcatchを追加約束をより簡潔に整理する方法 基本構文 1) async
ex)1台のサーバが10秒のネットワーク要求を必要とすると仮定する.
promiseとasyncでコードを書けば? asyncでのみ使用できます. ex)承諾all:転送アレイ、並列集約 コミットメントコンテスト:パラメータとしてITERABLEコミットメントの最初の完了と同じ方法で同じ結果値を完了し、伝達するコミットメントを返します.
ex) の深化学習を行った後、asyncと再び深く学習することを望んでいます.今まで、私は私の概念が丸いと感じて、基礎の概念から始めて、更によく勉強します:-)
今はまだ混同されている部分がありますが...一生懸命勉強しましょう.🔥
[DREAMコード講義を参考に創作した!]
1. callback function
✔¥もっと上品に言えば?
パラメータを介して関数を渡し、関数内部で実行する関数!
アップグレード:var、機能の宣言.
function printImmidiately(print) {
print();
}
printImmidiately(()=> console.log('hello')); ```
function printWithDelay(print, timeout) {
setTimeout(print,timeout);
}
printWithDelay(()=>console.log('async callback'),2000);
2. promise
object
ex)
const promise = new Promise ((resolve, reject) => {
console.log('doing something...');
setTimeout(()=> {
resolve('dodam');
reject (new Error('no network'));
// 둘 중 하나만 활성화해서 확인해보기!
},2000);
});
ユーザが
:正常な実行を約束した場合、
resolveの値はパラメータとして入力されます.
同じ承諾を返し、出力をキャプチャすることもできます.値を渡すこともできるし、非同期承諾
:拒否時転送値
:成功するかどうかにかかわらず、
Promise
.then((value)=> {
console.log(value);
})
.catch(error =>{
console.log(error);
})
.finally(()=> {
console.log('finally');
});
3) promise chaning接続承諾の形態.概念を直接実施し、確立しましょう.
ex)
const fetchNumber = new promise ((resolve, reject =>{
setTimeout (()=> resolve(1),1000);
}));
fetchNumber
.then (num => num * 2) //2
.then (num => num * 3) //6
.then (num => { //6
return new promise ((resolve, reject) => {
setTimeout (()=> resolve(num -1),1000); //5
});
})
.then (num => console.log(num)); //5 출력됨 ```
1秒ごとに3秒出力するように指定します
const getHen = () =>
new promise ((resolve, reject) => {
setTimeout(() => resolve ('닭'),1000);
});
const getEgg = hen =>
new promise ((resolve,reject) =>{
setTimeout(()=> resolve(`${hen} => egg`),1000);
setTimeout(()=> reject (new Error (`error! ${hen} => 계란 `)), 1000);
});
const cook = egg =>
new promise((resovle, reject) => {
setTimeout(() => resolve (`${egg}=> fried`),1000);
});
/.次に値を指定します.省略可能な内容を省略し、コードを整理する-getHen()
.then(hen=> getEgg(hen))
.then(egg => cook(egg))
.then(meal => console.log(meal));
もし卵が届かなかったら?上部エラーを処理するためにcatchを追加
getHen() //
.then(getEgg)
.catch(error => {
return '빵';
})
3. async, await
async function 함수명 (){
await 비동기처리메서드명 ();
} ```
ex)1台のサーバが10秒のネットワーク要求を必要とすると仮定する.
promiseとasyncでコードを書けば?
function fetchUser() {
return 'dodam';
}
1) Promise 로 쓰면?
function fetchUser() {
return new Promise ((resolve, reject)=> { // do network request in 10secs...
resolve ('dodam');
});
}
// resolve나 reject를 쓰지 않으면 계속 pending 상태로 남아있음
2) async 사용하면?
async function fetchUser() {
// do network request in 10secs...
return ('dodam');
};
const user = fetchUser();
user.then(console.log);
console.log(user);
- fatchUser는 promise를 return한다.
2) awiatfunction delay(ms) {
return new Promise (resolve => setTimeout(resolve,ms));
}
async function getApple() {
await delay (3000); // 딜레이가 끝날 때까지 기다려줌
throw 'error';
return 'apple';
}
async function getBanana() {
await delay (3000);
return 'banana';
}
1) promise를 쓴다면?
function getBanana() {
return delay(3000)
.then(()=> 'banana');
}
function pickFruits() {
return getApple().then (apple => {
return getBanana().then(banana => `${apple}+ ${banana}`);
});
}
pickFruits().then(console.log);
2) async로 표현하면?
async function pickFruits () {
try {
const apple = await getApple();
const banana = await getBanana();
} catch {
return `${apple}+ ${banana}`;
}
pickFruits().then(console.log);
* 병렬로 표현하기 (기다릴 필요가 없기 때문에)
async function pickFruits () {
const applePromise = getApple();
const bananaPromise = getBanana();
const apple = await applePromise;
const banana = await bananaPromise;
return `${apple}+ ${banana}`;
}
pickFruits().then(console.log);
3)有用な承諾APISex)
function pickAllFruits() {
return Promise.all([getApple(), getBanana()])
.then(fruits => fruits.join('+')
);
}
function pickOnlyOne() {
return Promise.race([getApple(),getBanana()]);
}
pickOnlyOne().then(console.log);
コンセプトReference
この問題について(08. TIL (callback function, promise,async)), 我々は、より多くの情報をここで見つけました https://velog.io/@damdreammm/08.-TIL-callback-function-promiseasyncテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol