generated at
javascriptのよく使うスニペット集
寝る
通常版
sleep.js
function sleep(delay) { return new Promise((resolve, reject) => { setTimeout(resolve, delay); }); }
sleep.ts
function sleep(delay: number): Promise<void> { return new Promise((resolve, reject) => { setTimeout(resolve, delay); }); }
使い方
使い方.js
sleep(500).then(()=>{ //500ミリ秒待ったあとの処理 }); //500ミリ秒待ってる間の処理
sleep_ac.js
function 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.ts
function 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.ts
const 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); });
AbortController対応版は、jsr:@std/async delay 関数として実装されている
いちいち自分で書かずに済んで便利takker

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