import defaultExport from "module-name"
//module-name 내에 export default로 내보내진 것을 가져옴
import * as allItems from "module-name"
//module-name 내에 export된 모든 것을 가져옴
//as 이후 이름은 중복만 아니면 자유롭게 정할 수 있음
import { loadItem } from "module-name"
//module-name 내에서 export된 것 중에 특정한 값만 가져옴
//,를 통해서 여러개를 가져올 수 있음
import { loadItem as loadSomething } from "moduel-name"
//module-name 내에서 export된 것 중에 특정 값만 이름을 바꿔서 가져옴
//이름의 중복을 피하기 위해서 사용
import defaultFunction, { loadingItem } from "module-name"
//export default된 것과 개별 export된 것을 한번에 가져올 수 있음
import "module-name"
//별도의 모듈 바인딩 없이 불러오기만 함
//불러오는 것만으로 효과가 있는 스크립트의 경우 사용
//XMLHttopRequest(XHR) :
//데이터를 비동기로 요청하고, 요청 후 동작을 비동기로 처리
function request(url, successCallback, failCallback){
const xhr = new XMLHttpRequest()
xhr.addEventListener('load', (e) => {
if(xhr.readyState == 4){
if(xhr.status === 200){
successCallback(JSON.parse(xhr.responseText))
}else{
failCallback(xhr.statusText)
}
}
})
xhr.addEventListener('error', (e) => failCallback(xhr.statusText))
xhr.open('GET', url)
xhr.send()
}
const promise = new Promise((resolve, reject) => {
//내부에서 비동기 상황이 종료될 때 resolve함수 호출
//내부에서 오류 상황일 때 reject함수 호출
//reject를 통해 실행이 끝난 이후 어떤 문제가 있었는지 알려줌
})
function asyncPromiseWork(){
return new Promise((resolve, reject) => {
//some code..
return resolve('complete')
})
}
asyncPromiseWork().then(result => console.log(result))
//result에는 resolve를 호출하며 넘긴 complete가 들어있음
//then으로 넘겨진 함수가 resolve가 호출되는 순간 실행됨
PromiseWork()
.then(result => {
return PromiseNextWork(result)
}).then(result => {
return PromiseNextWork(result)
}).catch(e => {
alert('에러 발생!')
}).finally(() => {
//성공, 실패여부와 상관없이 호출해야하는 코드가 있다면 finally 사용
//자원정리, 로딩중 처리 종료 등에 사용
alert('어쨋든 작업은 종료!')
})
//function 앞에 async 붙이기
async function asyncFunction(){
const res = await request(...)
}
//파라미터 정의하는 괄호 앞에 async 붙이기
const asyncFunction = async () => {
const rest = await request(...)
}
//async키워드 함수가 붙은 함수는 실행 결과를 Promise로 감쌈
async function asyncRun(){
return 'hi, hyoco'
}
console.log(asyncRun()) //Promise{<fulfilled> : 'hi, hyoco'}
asyncRun().then((message) => console.log(message)) //hi, hyoco
const work = async () => {
console.log('작업 시작')
await delay(1000)
console.log('작업 1 완료')
await delay(1000)
console.log('작업 2 완료')
await delay(1000)
console.log('작업 3 완료')
await delay(1000)
console.log('모든 작업 완료')
}
남은 10일차 강의와 14일차 강의를 모두 들었다! 매우 고됐던 함수형 프로그래밍 강의가 끝났다는 것에 행복했다..! 14일차는 module과 promise에 관련된 강의였다. module에 대해서 배웠는데 이 부분은 몰랐던 부분들이어서 생소했던 개념이지만 어렵지 않게 이해가 됐다. 다른 부분들 보다도 html에서 script를 불러올 때 의존도에 따라서 고민하지 않는다는 부분이 굉장히 편리하게 느껴졌다! module이후에 다시 한번 Promise, async/await 강의가 나왔는데 이전에 개념적으로 부족하다고 느꼈던 부분이라서 지난주에 놓치고 지나쳤던 부분들을 다시 공부할 수 있었다.
주말에 밀린 강의를 모두 마무리하고 싶었는데 이해가 안되는 부분들을 돌려서 다시듣고 필기하면서 강의 듣는 시간이 늘어나 마무리하지 못했다.. 하루가 24시간이라는게 원망스러운 날이었다. 얼른 기술의 발달로 사람이 안자고 안먹어도 살 수 있었으면 좋겠다고 생각했다 ㅎvㅎ 내일은 과제를 하기 위해서라도 밀린 15일차 강의를 들은 후 시간이 부족해서 빈칸으로 남겨둔 TIL을 채워넣을 생각이다! 4주차도 화이띵! ! !
쩡!!!!!! 고생해따!!! 멋있따!!!!! 🥰🥰🥰🥰