오늘의 학습내용
: 일정 시간 후, callback 함수를 실행시켜 줌
setTimeout(function () {
console.log('1초 후 실행');
}, 1000);
// delay
function runCallback() {
resetTitle();
playVideo();
delay(1000, () => {
pauseVideo();
displayTitle();
delay(500, () => {
highlightTitle();
delay(2000, resetTitle);
});
});
}
// sleep
function runPromise() {
resetTitle();
playVideo();
sleep(1000)
.then((param) => {
console.log(param);
pauseVideo();
displayTitle();
return "world";
})
.then((param) => {
console.log(param);
return sleep(5000);
})
.then(highlightTitle)
.then(sleep.bind(null, 2000))
.then(resetTitle)
.then(resetTitle)
.catch(err => {
console.log(err);
})
}
const sleep = (wait) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve("hello");
}, wait);
});
};
sleep(1000)
.then((param) => {
console.log(param); // "hello"
pauseVideo();
displayTitle();
return "world";
})
.then((param) => {
console.log(param); // "world"
return sleep(5000);
})
await 키워드 다음에 등장하는 함수 실행은 어떤 타입을 리턴할 경우에만 의미가 있나요?
: Promise 타입
await 키워드를 사용할 경우, 어떤 값이 리턴되나요?
: Promise의 resolve로 전달된 값
: 비동기 이벤트 기반 JavaScript 런타임
const fs = require('fs'); // 파일 시스템 모듈을 불러옵니다
const dns = require('dns'); // DNS 모듈을 불러옵니다
npm install underscore // 터미널 실행
const _ = require('underscore'); // 내장 모듈처럼 사용 가능
: 로컬에 존재하는 파일을 읽어옴.
fs.readFile(path[, options], callback)
path
: string | Buffer | URL | integer 사용 가능(일반적으로 string 타입을 써줌)
[options]
: 선택적 전달 인자
: Object | string 사용 가능(인코딩 시 많이 사용 - 'utf8')
callback(Function)
err : Error | AggregateError
-> err가 없으면 err에 null을 넣어줌
data : string | Buffer
-> data가 없으면 data에 null을 넣어줌
const fs = require("fs");
const getDataFromFile = function (filePath, callback) {
fs.readFile(filePath, 'utf-8', (err, data) => {
if(err){
callback(err,null);
} else {
callback(null, data);
}
});
};
module.exports = {
getDataFromFile
};
JSON(JavaScript Object Notation)
네트워크 통신 시 자주 사용되는 데이터 형식 중 하나(객체 형태)
key는 무조건 String 형식으로 이루어지며 keyvalue는 자료형/배열/객체임
JSON.parse
JSON의 내용을 읽어오고 객체를 생성하는 역할
{
"이름": "테스트",
"나이": 25,
"성별": "여",
"주소": "서울특별시 양천구 목동",
"특기": ["농구", "도술"],
"가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},
"회사": "경기 수원시 팔달구 우만동"
}
: 정보를 원격 URL로부터 불러오는 경우
let url =
"https://koreanjson.com/posts/1";
fetch(url)
.then((response) => response.json())
.then((json) => console.log(json))
.catch((error) => console.log(error));