다음 fetch 함수를 실행시켜보면 다음과 같은 결과가 출력됨.
console.log('시작!');
fetch('https://jsonplaceholder.typicode.com/users')
.then((response) => response.text())
.then((result) => { console.log(result); });
console.log('끝!');
console.log('끝!'); 이 fetch 함수보다 먼저 출력되는 것을 확인할 수 있는데, 이는 fetch 함수에 비동기실행이 되는 부분이 있기 때문
[fetch 함수의 비동기실행]
1. 1 에서 '시작!' 이 출력
2. fetch 함수가 실행되며 Request를 보내고 어떤 객체를 리턴함. 이 때 3, 4에서 그 객체의 then 메소드로 콜백을 등록하는데, 이 콜백함수는 서버로부터 Response 를 받았을 때 실행됨. 3번 콜백이 실행된 후 이후의 리턴값을 4번 콜백이 넘겨받아 함수가 실행됨.
then 메소드는 콜백함수를 실행하는 것이 아닌 등록하는 역할임
3. 2 에서 끝! 이 출력
4. 서버에 response 가 도착하게 되면, then 메소드로 등록해 놓은 콜백함수가 순서대로 실행되면서 3, 4 순서대로 실행 됨.
이처럼 한번 시작된 작업이 완료되기 전에, 다음 코드로 실행이 넘어가고 나중에 콜백이 실행되며 작업이 마무리 되는 것을 비동기 실행이라 함.
'JavaScript > Web Development' 카테고리의 다른 글
[JavaScript] Promise 객체 (0) | 2023.03.01 |
---|---|
[JavaScript] 비동기 실행 함수 (0) | 2023.02.28 |
[JavaScript] Status code (상태코드) (0) | 2023.02.28 |
[JavaScript] PUT/ DELETE request 보내기 (1) | 2023.02.28 |
[JavaScript] GET/ POST request 보내기 (0) | 2023.02.28 |