OS-同期と非同期
21599 ワード
同期と非同期
:データの受信方法
✔同期(同期)
要請すれば、どんなに時間がかかっても、その場で結果を出さなければならない.
(要求後→応答後→次の動作を実行)
✔非同期
欠点:動機より複雑です.動機と非動機は、あるタスクまたはそれに関連するタスクを処理する異なる視点である.
✔非同期操作
コールバック()コールバック():非同期関数ひどうきかんすう
関数は別の関数のパラメータとして渡され、イベントが発生すると、パラメータとして渡される関数が再び呼び出されます.
コードが長ければ長いほど可読性が悪くなり、管理が困難になる→コールバックヘルプ
const f1=(callback)=>{
setTimeout(function(){
console.log("1번 주문완료");
callback();
}, 1000);
};
const f2=(callback)=>{
setTimeout(function(){
console.log("2번 주문완료");
callback();
}, 2000);
};
const f3=(callback)=>{
setTimeout(function(){
console.log("3번 주문완료");
callback();
}, 1000);
};
console.log('시작')
f1(function(){
f2(function(){
f3(function(){
console.log("끝")
});
});
});
promise()
非同期実行操作の結果を表すオブジェクト(非同期結果をオブジェクト化)
おいしい
const pf1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res("1번 주문완료");
}, 1000);
});
};
const pf2 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res("2번 주문완료");
}, 2000);
});
};
const pf3 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res("3번 주문완료");
}, 3000);
});
};
console.log("시작");
pf1()
.then((res) => pf2(res)) //f1(프로미스반환)실행, resolve함수를 실행으로 넘긴값을 f2로 넘겨줌
.then((res) => pf3(res))
.then((res) => console.log(res))
.catch(console.log)
.finally(() => {
console.log("끝");
});
async/await()
最も単純で,鎖の形でPromisを呼び出すthen法よりも毒性がある.
const pf1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res("1번 주문완료");
}, 1000);
});
};
const pf2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res("2번 주문완료");
}, 2000);
});
};
const pf3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res("3번 주문완료");
}, 3000);
});
};
console.log("시작");
async function order() { //await는 async함수 내부에서만 사용가능 일반함수에서 사용하면 에러
const result1 = await pf1();//프로미스 차례가 될때까지 기다림 result에 pf1의 resolve된 값을 넣어줌
const result2 = await pf2(result1);
const result3 = await pf3(result2);
console.log(result3);
console.log("종료");
//result1 변수에 pf1()데이터가 기다렸다가 들어가니깐 promise의 then보다 가독성이 좋음
}
order();
Reference
この問題について(OS-同期と非同期), 我々は、より多くの情報をここで見つけました https://velog.io/@yejz0715/운영체제-동기와-비동기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol