[Section 2] 비동기

정호·2023년 3월 21일
0

코드스테이츠

목록 보기
30/49

동기

특정 코드의 실행이 완료될 때까지 기다리고 다음 코드를 수행하는 것

비동기

특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드들을 수행하는 것


타이머

setTimeout(callback, milliesecond)

일정 시간 후 함수 실행

setTimeout(function () {
  console.log('1초 후 실행');
}, 1000);
// 123

clearTimeout(timerId)

타이머 종료

const timer = setTimeout(function () {
  console.log('10초 후 실행');
}, 10000);
clearTimeout(timer);
// setTimeout이 종료됨.

setInterval(callback, milliesecond)

일정 시간 간격으로 함수 반복 실행

setInterval(function () {
  console.log('1초마다 실행');
}, 1000);
// 345

clearInterval(timerId)

setInterval 종료

const timer = setInterval(function () {
  console.log('1초마다 실행');
}, 1000);
clearInterval(timer);
// setInterval이 종료됨.

비동기 코드는 작성된 순서대로가 아닌 동작이 완료되는 순서대로 작동한다.


Promise

프로미스는 클래스이기 때문에 new키워드를 통해 프로미스 객체를 생성한다. resolve, reject 함수를 인수로 전달받는다.

Promise 객체의 내부 프로퍼티

Promise객체는 state, result 내부 프로퍼티를 갖는다.

  • .then, .catch, .finally 메서드로 접근

state

기본 (pending) 성공(fulfilled) 거부(reject)

Result

처음은 undefined 비동기 처리할 콜백함수 성공 resolve(value) 실패 reject(error)


then

excutor코드가 정상 처리되면 resolve함수 호출, .then메서드로 접근, Promise면 내부 프로퍼티 result를 받아오고 Promise가 아니면 리턴한 값을 .then의 콜백 인자로 받아온다.

let promise = new Promise((resolve, reject) => {
	resolve("성공");
});

promise.then(value => {
	console.log(value);
	// "성공"
})

Promise.all()

Promise.all()은 여러 개의 비동기 작업을 동시에 처리하고 싶을때 사용합니다.
인자로는 배열을 받습니다. 해당 배열에 있는 모든 Promise에서 executor 내 작성했던 코드들이 정상적으로 처리가 되었다면 결과를 배열에 저장해 새로운 Promise를 반환 해줍니다.

동시에 처리, 에러 발생하면 즉시 종료

얘를 콜백,프로미스 방식으로 하는게 목적

profile
열심히 기록할 예정🙃

0개의 댓글