1.try,catch
try {
} catch (error) {
}
try {
if (5 === 5) throw "Err";
} catch (error) {
console.log(error);
}
- try-catch문은 기본적으로 오류를 잡는 역할을 한다. 오류가 나도 기능이 멈추지 않고 계속 유지되며 catch로 err를 return한다.
function myStr(params) {
let devValue = document.querySelector(".dev").value;
try {
if (devValue == "") {
throw "비었음";
}
devValue = parseInt(devValue);
console.log(typeof devValue);
console.log(isNaN(devValue));
if (isNaN(devValue)) throw "숫자가 아님";
} catch (error) {
console.log(typeof devValue);
console.log(devValue);
document.querySelector(".message").innerHTML = error;
}
}
- isNaN() 함수는 문자열,숫자를 판별한다.
- 근데 우린 문자열에 parseInt를 주었는데도 isNaN은 true를 뱉었다.
- 사실 type은 number로 바뀌었지만 값은 NaN으로 number가 아니다…. 즉 문자열 취급을 받는다….
2.재귀
function add(n) {
if (n < 5) {
n += 1;
add(n);
console.log(n);
}
}
add(0);
function fibonacci(n) {
if (n < 2) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
for (let i = 0; i < 30; i++) {
console.log(fibonacci(i));
}
3.promise,async,await 동기,비동기
function testPromise(num) {
return new Promise(function (resolve, reject) {
try {
if (num > 10) reject({ date: "숫자큼" });
console.log(num);
setTimeout(() => {
resolve(num );
}, num * 1000);
} catch (error) {
reject(error);
}
});
}
async function asyncFun(params) {
try {
let temp = await testPromise(5);
console.log(1);
temp=await testPromise(temp);
console.log(temp)
} catch (err) {}
}
asyncFun()
- js의 꽃 동기/비동기이다.
- Promise는 비동기적인 작업을 처리하기 위한 객체다.
성공하면 resolve()함수가 실행되고, 실패하면 reject()함수가 실행된다.
resolve()함수의 인자로 성공한 결과값이, reject()함수의 인자로 실패한 이유가 전달된다.
Promise 객체는 then()과 catch() 메서드를 가지고 있다.
then() 메서드는 resolve()함수가 실행되었을 때 호출되는 콜백 함수를 전달받고,
catch() 메서드는 reject()함수가 실행되었을 때 호출되는 콜백 함수를 전달받는다.
이렇게 Promise를 사용하면 비동기적인 코드를 동기적으로 실행할 수 있게 된다.
async와 await 키워드를 사용하면 Promise 기반의 코드를 더욱 간결하게 작성할 수 있다.
await 키워드는 Promise가 resolve되기를 기다리는 키워드다.
- 가장 중요한건 비동기적으로 실행되어야 할 함수가 동기적으로 실행된다는것, 즉 내가 원하는대로 순서를 조정할 수 있다는 것이다!
😢 좀 더 좀 더 많은 async 공부가 필요하다 ….더 공부하자