어제부터 진행한 비동기 부분에 관련하여 오늘도 진행했다.
확실히 알게 된 것은 node.js에서는 non-blocking은 비동기, blocking은 동기로 이해하면 될 것 같다는 것이다. 하지만 node.js가 아닌 다른 언어의 환경에는 그러지 않을 수 있다고 한다.
어제부터 진행한 스프린트에서 다룬 부분은 callback에서부터 promise, async await까지인데
중첩된 callback의 사례에는 먼저 애니메이션 동작 그리고 공식 문서를 처음 접했을 때 힘들었던 파일 입/출력 부분 마지막으로 fetch를 사용하는 네트워크 요청이 있다. callback의 단점인 callback Hell 어제 다뤘고 그 점을 보완한 promise까지 알아보았다. 좀 더 자세히 알아보자면...
promise는 3가지의 상태를 가진다.
대기(pending): 이행하거나 거부되지 않은 초기 상태
이행(fulfilled): 연산이 성공적으로 완료된 상태
거부(rejected): 연산이 실패한 상태...
promise 사용 패턴에는 resolve, then, reject, catch가 있는데
then은 resolve로 받은 값을 받아오고 catch는 reject의 값을 에러로 받아온다? 상호보완관계로 생각하면 될 것 같다.
그리고 무조건 실행이 되어야 하는 코드인 finally가 있다고 하는데 일단 resolve와 reject에 익숙해지는데 우선 집중을...
아래의 그림으로 정리해보았다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
new Promise(); // 대기(pending)
new Promise(function(resolve, reject) {.... }); // 콜백 함수의 인자 resolve, reject
new Promise(function(resolve, reject) { // 이행상태(fulfilled)
resolve();
});
/..../.then(function(resolvedData) {...}); // .then을 이용해 처리결과값을 받을 수 있음
new Promise(function(resolve, reject) { // 거부상태(rejected)
reject();
});
/..../.catch(function(err) {...}); // .catch를 이용해 실패처리결과값을 받을 수 있음
|
cs |
그리고 공식문서를 보아서 애먹었던 fs.readFile의 node.js 공식 문서 가이드...
1
2
3
4
5
6
|
fs.readFile(path[, options], callback)
fs.readFile(filePath, 'utf8', (err, data) => {
...
})
|
cs |
fs.readFile 메서드 비동기적으로 파일 내용 전체를 읽는 것으로
path 부분은 파일 이름을 인자로
options 부분은 넣을 수도 있고, 넣지 않을 수도 있다.
마지막 callback 부분은 콜백 함수를 넘기며 이는 파일을 읽고 난 후에 비동기적으로 실행되는 함수라고 보면 된다.
이다음에 잠시 접해보았던 fetch 부분은 HTTP, Ajax를 배우면서 더 자세히 다룰 것 같기에 조만간에 세세히 다루어 볼 수 있을 것 같다.
'개념정리' 카테고리의 다른 글
11/12[TIL]Browser Security (0) | 2020.11.12 |
---|---|
11/11[TIL]Web architecture (0) | 2020.11.11 |
11/9[TIL] Asynchronous (0) | 2020.11.09 |
11/3[TIL]AWS Deploy (0) | 2020.11.03 |
10/30 [TIL] OAuth 2.0 (0) | 2020.10.30 |