특정 코드의 실행이 완료될 때까지 기다리고 다음 코드를 수행하는 것
특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드들을 수행하는 것
일정 시간 후 함수 실행
setTimeout(function () {
console.log('1초 후 실행');
}, 1000);
// 123
타이머 종료
const timer = setTimeout(function () {
console.log('10초 후 실행');
}, 10000);
clearTimeout(timer);
// setTimeout이 종료됨.
일정 시간 간격으로 함수 반복 실행
setInterval(function () {
console.log('1초마다 실행');
}, 1000);
// 345
setInterval 종료
const timer = setInterval(function () {
console.log('1초마다 실행');
}, 1000);
clearInterval(timer);
// setInterval이 종료됨.
비동기 코드는 작성된 순서대로가 아닌 동작이 완료되는 순서대로 작동한다.
프로미스는 클래스이기 때문에
new
키워드를 통해 프로미스 객체를 생성한다.resolve
,reject
함수를 인수로 전달받는다.
Promise객체는 state
, result
내부 프로퍼티를 갖는다.
.then
, .catch
, .finally
메서드로 접근기본 (pending) 성공(fulfilled) 거부(reject)
처음은 undefined
비동기 처리할 콜백함수 성공 resolve(value)
실패 reject(error)
excutor
코드가 정상 처리되면 resolve
함수 호출, .then
메서드로 접근, Promise
면 내부 프로퍼티 result
를 받아오고 Promise
가 아니면 리턴한 값을 .then
의 콜백 인자로 받아온다.
let promise = new Promise((resolve, reject) => {
resolve("성공");
});
promise.then(value => {
console.log(value);
// "성공"
})
Promise.all()
은 여러 개의 비동기 작업을 동시에 처리하고 싶을때 사용합니다.
인자로는 배열
을 받습니다. 해당 배열에 있는 모든 Promise에서 executor 내 작성했던 코드들이 정상적으로 처리가 되었다면 결과를 배열에 저장해 새로운 Promise
를 반환 해줍니다.
동시에 처리, 에러 발생하면 즉시 종료
얘를 콜백,프로미스 방식으로 하는게 목적