2020/09/21 TIL

동기 vs 비동기

사진에서 볼 수 있듯이 왼쪽은 동기, 오른쪽은 비동기이다. 동기 같은 경우는 클라이언트가 요청을 보내면 그 요청이 끝날 때까지 기다려야지만 다음 요청을 받고 수행하는 것을 볼 수 있다.

하지만 비동기는 클라이언트의 요청을 바로바로 받고 수행하게 되기 때문에 걸리는 시간도 동기보다 훨씬 짧다.

콜백 지옥에서 벗어나기 위한 Promise

//Promise 선언
let promise = function (param) {

	return new Promise(function (resolve, reject) {

		// 비동기를 표현하기 위해 setTimeout 함수를 사용 
		window.setTimeout(function () {

		// 파라메터가 참이면, 
		if (param) {

			// 해결됨 
			resolve("해결 완료");
		}

		// 파라메터가 거짓이면, 
		else {
		// 실패 
		reject(Error("실패!!"));
		}
	}, 3000);
});};

//Promise 실행
promise(true)
.then(function (text) {
	// 성공시
	console.log(text);
}, function (error) {
	// 실패시 
	console.error(error);
});

pending: 팬딩이 걸린 상태, 아직 약속이 fulfilled 될지 rejected 정해지지않은 상황
fulfilled: 약속이 지켜진 상태(실행됨)
rejected: 약속이 못 지켜진 상태(거절됨)
settled: 약속이 지켜졌든 아니든 일단 결론이 난 상태

const promise1 = Promise.resolve(123);

promise1.then((value) => {
  console.log(value);
  // expected output: 123
});

Promise .then 의 리턴값은 resolve()안에 들어가 있는 값이며, then()의 매개변수 또한 resolve안에 들어있는 값이다

https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_fs_readfile_path_options_callback

좋은 웹페이지 즐겨찾기