⭐️ Loop 함수
import { isFunction } from "./typeOf.js";
import { throwTypeError } from "./throwError.js";
export function loop(callback, repeatCount = 10) {
if (!isFunction(callback)) {
throwTypeError("callback 인자 유형은 함수여야 합니다.");
}
Array(repeatCount)
.fill(null)
.forEach((_, i) => callback(i));
}
loop 함수는 반복 횟수와 콜백 함수를 인자로 받아서, 주어진 횟수만큼 콜백 함수를 반복 호출하는 함수입니다.
만약 인자로 전달된 콜백 함수가 함수 유형인지 체크하고, 아니라면 예외를 발생시킵니다. 반복은 Array의 fill()과 forEach() 메서드를 사용하여 구현하며, 인덱스 값을 콜백 함수에 전달합니다.
⭐️ delay 함수
import { isFunction, isNumber } from "./typeOf.js";
export function delay(...args) {
const [firstArg, ...restArgs] = args;
if (!firstArg || isNumber(firstArg)) {
let timeout = firstArg ?? 1000;
return new Promise((resolve) => {
setTimeout(resolve, timeout);
});
}
if (isFunction(firstArg)) {
const [timeout] = restArgs; /* [number, ...] */
return setTimeout(firstArg /* callback */, timeout ?? 1000);
}
}
// callback api 지원
// delay(() => console.log("l초 뒤에 실행됨"));
// delay(() => console.log("3.l초 뒤에 실행됨"), 3100);
// promise api 지원
// delay().then(() => console.log("l초 뒤에 실행됨"));
// delay(2400).then(() => console.log("2.4초 뒤에 실행됨"));
delay 함수는 인자로 주어진 값이 숫자인 경우, 해당 시간(ms)만큼 대기한 후에 Promise를 반환합니다. 만약 인자가 주어지지 않은 경우 1000ms(1초) 대기합니다. 인자로 주어진 값이 함수인 경우, 인자로 주어진 숫자(ms)만큼의 딜레이 후에 해당 함수를 실행합니다. 만약 인자로 주어진 숫자가 없는 경우 1000ms(1초) 대기합니다. 이 함수는 Promise 또는 setTimeout에 딜레이를 적용하고, 재사용 가능한 함수입니다.
'Javascript > 재사용 함수' 카테고리의 다른 글
Memoization(메모이제이션) 패턴을 구현한 memo 함수 (0) | 2023.04.04 |
---|---|
throttle, debounce 유틸리티 함수 (0) | 2023.04.04 |
객체나 배열의 각 요소를 처리하는 유틸리티 함수 (0) | 2023.04.04 |
랜덤한 수를 생성하기 위한 유틸리티 함수 (0) | 2023.04.04 |
데이터 유형을 확인하기 위한 여러 가지 유틸리티 함수 (0) | 2023.04.04 |