javascriptのよく使うスニペット集
寝る
通常版
sleep.jsfunction sleep(delay) {
return new Promise((resolve, reject) => {
setTimeout(resolve, delay);
});
}
sleep.tsfunction sleep(delay: number): Promise<void> {
return new Promise((resolve, reject) => {
setTimeout(resolve, delay);
});
}
使い方
使い方.jssleep(500).then(()=>{
//500ミリ秒待ったあとの処理
});
//500ミリ秒待ってる間の処理
sleep_ac.jsfunction sleep(delay, signal) {
return new Promise((resolve, reject) => {
const timeout = setTimeout(resolve, delay);
if (typeof signal != "undefined") {
signal.addEventListener("abort", () => {
clearTimeout(timeout);
reject("aborted");
}, { once: true });
}
});
}
// 使用例
const ac = new AbortController();
sleep(500, ac.signal);
// 止める時
ac.abort();
sleep_ac.tsfunction sleep(delay: number, signal?: AbortSignal) {
return new Promise((resolve, reject) => {
const timeout = setTimeout(resolve, delay);
if (typeof signal != "undefined") {
signal.addEventListener("abort", () => {
clearTimeout(timeout);
reject("aborted");
}, { once: true });
}
});
}
// 使用例
const ac = new AbortController();
sleep(500, ac.signal);
// 止める時
ac.abort();
もうちょっとマシな使用例
fetch_timeout.tsconst fetch_ac = new AbortController();
const timeout_ac = new AbortController();
Promise.race([
sleep(500, timeout_ac.signal).then(() => {
fetch_ac.abort("タイムアウト");
return Promise.reject("タイムアウト");
}),
fetch("http://www.example.org/", { signal: fetch_ac.signal }).then(
(res) => {
timeout_ac.abort("fetchが完了しました");
return res;
},
),
]).then((res) => {
console.log(res);
}).catch((rea) => {
console.error(rea);
});
いちいち自分で書かずに済んで便利

stringを String.fromCodePoint
で使える配列にする
使い方
jsconst a = stringToCodePointArray("文字列文字列たっかーを崇めよ") ;
// aの中身:[25991,23383,21015,25991,23383,21015,12383,12387,12363,12540,12434,23815,12417,12424]
String.fromCodePoint(...a)
// 結果:"文字列文字列たっかーを崇めよ"