[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);
}
Leave a comment