_.each = function (collection, iteratee) {
// TODO: 여기에 코드를 작성합니다.
if(Array.isArray(collection)){
for(let i =0;i<collection.length ;i++){
iteratee(collection[i],i,collection);
}
}else{
let arr = Object.keys(collection);
for(let i =0;i<arr.length ;i++){
iteratee(collection[arr[i]],arr[i],collection);
}
}
}
_.filter = function (arr, test) {
// TODO: 여기에 코드를 작성합니다.
let result = [];
_.each(arr, function (n){ // arr.filter(fuction(n){ test })의 동작을 생각하며 이해
test(n) ? result.push(n):false;
})
return result;
};
_.map = function (arr, iteratee) {
// TODO: 여기에 코드를 작성합니다.
// _.map 함수는 매우 자주 사용됩니다.
// _.each 함수와 비슷하게 동작하지만, 각 요소에 iteratee를 적용한 결과를 리턴합니다.
let result = [];
_.each(arr,function (n){
result.push(iteratee(n));
})
return result;
};
_.reduce = function (arr, iteratee, initVal) {
// TODO: 여기에 코드를 작성합니다.
let result = 0;
let index = 0;
result = initVal;
_.each(arr, function (n){
let acc;
if(initVal === undefined && index === 0)
{
acc = arr[0];
}else{
acc = iteratee(result,n,index,arr)
}
result = acc
index++;
})
return result;
};
[part 1]
Promise 실행 함수가 가지고 있는 두 개의 파라미터 resolve 와 reject 는 각각 무엇을 의미하나요?
- resolve: 비동기 작업이 성공적으로 이루어짐
- reject: 비동기 작업이 실패함
resolve, reject함수에는 전달인자를 넘길 수 있습니다. 이때 넘기는 전달인자는 어떻게 사용할 수 있나요?
- resolve의 경우 호출의 결과 값을 .then 매소드를 통해 가져오고 해당 값을 .then 매소드의 콜백 함수의 인자값으로 넘겨 콜백함수를 실행하는 방법으로 사용
- reject의 경우 호출의 결과 값을 .catch 매소드를 통해 가져오고 해당 값을 .catch 매소드의 콜백 함수의 인자 값으로 넘겨 콜백 함수를 실행하는 방법으로 사용
new Promise()를 통해 생성한 Promise 인스턴스에는 어떤 메서드가 존재하나요? 각각은 어떤 용도인가요?
- .then: resolve를 정상 호출한 경우 실행한 결과값을 반환된 promise 내부 프로포티인 result를 가져와 .then의 콜백함수의 인자로 활용
- .catch: reject가 정상 호출된 경우 실행한 결과값을 반환된 promise 내부 프로포티인 result를 가져와 .then의 콜백함수의 인자로 활용
- .finally: 호출된 함수와 상관없이 항상 접근해 값을 가져오 활용할 수 있게 해줌
Promise.prototype.then 메서드는 무엇을 리턴하나요?
- resolve 호출의 결과값을 result에 담은 promise
Promise.prototype.catch 메서드는 무엇을 리턴하나요?
- reject 호출의 결과값을 result에 담은 promise
Promise의 세 가지 상태는 각각 무엇이며, 어떤 의미를 가지나요?
- pending : new Promise()가 실행된 직후의 상태로, promise 생성 후 아무것도 처리되지 않은 상태
- fullfilled : resolve가 호출되었으며 성공적으로 비동기 작업이 이루어진 상태
- rejected : reject가 호출되었으며 비동기 작업이 실패한 상태
await 키워드 다음에 등장하는 함수 실행은 어떤 타입을 리턴할 경우에만 의미가 있나요?
- await뒤에 붙은 비동기 작업의 결과로 result를 담은 promise이 반환 될때
await 키워드를 사용할 경우, 어떤 값이 리턴되나요?
- await뒤에 붙은 비동기 작업의 결과로 result를 담은 promise이 반환 될때 까지 대기한 후 반환 후 다음 작업이 실행됨
[part 2]
- 비동기 작업을 처리할 promise들을 담고있는 순회 가능한 객체(배열)
- 각 비동기처리 과정을 통해 resolve 호출의 결과값을 result에 담았고 result 값을 처리된 비동기 작업의 인덱스 위치에 요소로 가지는 배열
- 해당 promise 내부의 reject가 실행되고 결과 값을 result에 담은 후 해당 promise 반환하고 Promise.all 전체가 거부됨, 따라서 이후의 다른 promise는 실행되지 않음
- 이후 reject 상태의 promisedp result에 담긴 값을 콜백함수의 인자값으로 받아 동작하는 .catch가 실행됨(reject 상태기 때문)
[part 3]
fetch API 란?
- 넘기 주소의 서버에 요청을 하고 정보를 받아올 수 있음
Axios 란?
- fetch와 마찬가지로 요청후 정보를 받아올 수 있는 비동기 라이브러리로 설치를 필요로하고 정보를 받을 때 자동으로 json데이터 형식으로 자동으로 변환됨