Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 코딩공부
- asp
- JS
- IP차단
- 바닐라스크립트
- 바닐라 자바스크립트
- CSS
- JSP
- git
- 마우스커서
- Slide
- github
- SQL
- 애니메이션
- jQuery
- 기초
- 웹접근성
- 프론트앤드키워드
- 웹표준
- SQLD후기
- TweenMax.js
- VANILLA
- 웹개발키워드
- sqld52회차
- 로또 회차
- 텍스트조절
- 팝업레이어
- Python
- 바닐라자바스크립트
- sqld
Archives
- Today
- Total
단비의 코딩 공부 blog
[javascript] react 들어가기 전! javascript 복습 (실전3) 본문
7. 동기 / 비동기
function taskA(a, b, cb) {
// console.log("A 작업 끝");
setTimeout(() => {
const res = a + b;
cb(res);
//console.log("A TASK END");
}, 3000);
}
function taskB(a, cb){
setTimeout(() => {
const res = a * 2;
cb(res);
}, 1000);
}
function taskC(a, cb){
setTimeout(() => {
const res = a * -1;
cb(res);
}, 2000);
}
taskA(3,4, (res) =>{
console.log("A TASK RESULT : ", res);
});
taskB(7, (res) =>{
console.log("B TASK RESULT : ", res);
});
taskC(14, (res) =>{
console.log("C TASK RESULT : ", res);
});
console.log("코드 끝");
결과 :

function taskA(a, b, cb) {
// console.log("A 작업 끝");
setTimeout(() => {
const res = a + b;
cb(res);
//console.log("A TASK END");
}, 3000);
}
function taskB(a, cb){
setTimeout(() => {
const res = a * 2;
cb(res);
}, 1000);
}
function taskC(a, cb){
setTimeout(() => {
const res = a * -1;
cb(res);
}, 2000);
}
// taskA(3, 4, (res) =>{
// console.log("A TASK RESULT : ", res);
// });
// taskB(7, (res) =>{
// console.log("B TASK RESULT : ", res);
// });
// taskC(14, (res) =>{
// console.log("C TASK RESULT : ", res);
// });
taskA(4,5,(a_res) => {
console.log("A RESULT : ", a_res);
taskB(a_res, (b_res) => {
console.log("B RESULT : ", b_res);
taskC(b_res, (c_res) => {
console.log("C RESULT : ", c_res);
});
});
})
console.log("코드 끝"); //
결과 :

8. promise (비동기처리 함수에 도움)
function isPositive(number, resolve, reject) {
setTimeout(() => {
if (typeof number === "number"){
//성공 -> resolve
resolve(number >= 0 ? "양수" : "음수");
} else {
//실패 -> reject
reject("숫자형이 아닙니다");
}
}, 2000);
}
function isPositiveP(number){
const executor = (resolve, reject) => { //실행자
setInterval(() => {
if (typeof number === "number"){
//성공 -> resolve
console.log(number);
resolve(number >= 0 ? "양수" : "음수");
} else {
//실패 -> reject
reject("숫자형이 아닙니다");
}
}, 2000);
};
const asyncTask = new Promise(executor);
return asyncTask;
}
const res = isPositiveP(101);
res
.then((res) => {
console.log("작업 성공 : ", res);
})
.catch((err) => {
console.log("작업 실패 : ", err);
})
// isPositive(
// // 10, 성공
// //실패
// [],
// (res) => {
// console.log("성공적으로 수행됨 : ", res);
// },
// (err) => {
// console.log("실패 : ", err);
// }
// );

객체 메서드 참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise
function taskA(a, b){
return new Promise((resolve, reject) => {
setTimeout(() => {
const res = a + b;
resolve(res);
}, 3000);
});
}
function taskB(a){
return new Promise((resolve, reject) => {
setTimeout(() => {
const res = a * 2;
resolve(res);
}, 1000);
});
}
function taskC(a){
return new Promise((resolve, reject) => {
setTimeout(() => {
const res = a * -1;
resolve(res);
}, 2000);
});
}
// then 체이닝 방법
taskA(5, 1)
.then((a_res) => {
console.log("A RESULT :", a_res);
return taskB(a_res);
})
.then((b_res)=> {
console.log("B RESULT :", b_res);
return taskC(b_res);
})
.then((c_res)=> {
console.log("C RESULT :", c_res);
});
// 콜백 방법
// taskA(5, 1).then((a_res) => {
// console.log("A RESULT :", a_res);
// taskB(a_res).then((b_res) => {
// console.log("B RESULT:", b_res);
// taskC(b_res).then((c_res) => {
// console.log("C RESULT:", c_res);
// });
// });
// });
// taskA(3, 4, (a_res) => {
// console.log("TASK A :", a_res);
// taskB(a_res,(b_res) => {
// console.log("TASK B :", b_res);
// taskC(b_res,(c_res) => {
// console.log("TASK C :", c_res);
// });
// });
// });
결과 :

'javascript&jquery' 카테고리의 다른 글
[jQuery]table 클릭 시 하위 숨김 컨텐츠 - open close (1) | 2023.12.20 |
---|---|
[javascript] react 들어가기 전! javascript 복습 (실전4 - 완) (0) | 2023.11.24 |
[javascript] react 들어가기 전! javascript 복습 (실전2) (0) | 2023.11.22 |
[javascript] react 들어가기 전! javascript 복습 (실전1) (1) | 2023.11.21 |
[javascript]새로고침 후 랜덤으로 슬랏에 백그라운드 컬러 이동 (0) | 2023.06.28 |