[230823] Leetcode - 141. Linked List Cycle, AbortController

Leetcode - 383. Ransom Note

  • 383. Ransom Notee
  • 객체 이용
  • for 문이나 , char in hash 등 JS 친화적으로 코드 개선함
/**
 * @param {string} ransomNote
 * @param {string} magazine
 * @return {boolean}
 */
var canConstruct = function (ransomNote, magazine) {
  const hash = {};

  for (const char of magazine) {
    if (char in hash) hash[char] += 1;
    else hash[char] = 1;
  }

  for (const char of ransomNote) {
    if (!hash[char]) return false;
    hash[char] -= 1;
  }

  return true;
};

AbortController

  • 프론트에서 네트워크 요청을 관리하고 취소할 수 있도록 도와주는 객체
  • 실제로 API 요청을 멈추는 것은 아니라 취소나 완료된 것으로 간주할 수 있음
  • fetch에 controller.signal 객체 넣어서 관리
  • abort() 사용하면 멈춘 것처럼 에러코드 받을 수 있음
let timeoutId;
try {
  const controller = new AbortController();
  timeoutId = setTimeout(() => controller.abort(), 5000);
  const res = await fetch(url, { signal: controller.signal });
  const body = await res.json();
} catch (e) {
  if (e.name === "AbortError") {
    // 콜백 함수 등을 이용해 커스텀
  } else {
    // A network error, or some other problem.
    console.log(`Type: ${e.name}, Message: ${e.message}`);
  }
} finally {
  clearTimeout(timeoutId);
}

Categories:

Updated:

Leave a comment