Skip to main content

Module timers_gen

Module timers_gen 

Source

Statics§

RAF_TS 🔒
疑似 DOMHighResTimeStamp(16ms 刻みの単調増加)。決定論的にするため実時刻は使わない。
TIMER_ID 🔒

Functions§

attach_iterator_helpers 🔒
Iterator.from(iterable)(ES2025)。任意のイテラブル(配列/Set/Map/Generator/文字列)を 即座に展開して ObjKind::Array でラップし、Iterator helpers 一式にアクセスできるようにする。 map/filter/flatMap/forEach/some/every/find/reduce は Array.prototype の 同名メソッドが(このプロパティルックアップでは配列の組込みメソッド判定が .props より 先に評価されるため)そのまま使われ、take/drop/toArray(Array に無いメソッド)のみを .props として追加する。Generator と同じ「その場で全展開する」簡略実装(無限イテレータ非対応)。 take/drop(ES2025 Iterator Helpers)が返す新しい配列オブジェクトへ、 同じヘルパーメソッド一式を再付与する。以前はIterator.from(...)が返す 最初のオブジェクトにしかこれらのメソッドが付与されておらず、.take(n)/ .drop(n)自身が返す新しい配列オブジェクトには引き継がれないため、 Iterator.from([...]).take(2).toArray()のような定番のチェーン呼び出しが 2段目のメソッド呼び出しで「not a function」になって失敗するバグだった。
clear_interval 🔒
clear_timeout 🔒
gen_next 🔒
async function* () {}(非同期 generator)の .next() が仕様上必ず Promise を 返すべきところ(AsyncGenerator.prototype.next)、is_async フラグが is_ generator のチェックに常に先を越されて完全に無視されており(call_value の 分岐順序)、普通の同期 generator と全く同じ {value,done} プレーンオブジェクトを 直接返してしまっていたバグ。await gen.next() は非 Promise 値をそのまま返す 簡略実装のおかげで見かけ上は動いていたが、gen.next() instanceof Promise 等の 型チェックは常に false になっていた。
gen_return 🔒
gen_self_iterator 🔒
Generator.prototype[Symbol.iterator]/AsyncGenerator.prototype[Symbol.asyncIterator] は仕様上どちらも「自分自身を返す」だけだが、丸ごと未登録だったため for await (x of asyncGen())Symbol.asyncIterator を見つけられず、 常に同期の eager-drain フォールバック(iterate_values/drain_generator)に 落ちていた(値自体は一致するが、generator 内で投げた例外が for-await に 伝播せず黙って握り潰される差異があった)。
gen_self_iterator_fn
gen_state 🔒
gen_throw 🔒
generator.throw(err)(ES2015)が丸ごと未実装だった。next/return はあったが、 throw だけが欠落していたため、generator の中断位置に例外を注入する(協調的な キャンセルや for await の内部実装等で使われる)標準的な操作ができなかった。
generator_method
next/return メソッド(interp の get_property から返す)。
iter_help_drain 🔒
iter_help_drop 🔒
iter_help_every 🔒
iter_help_filter 🔒
iter_help_find 🔒
iter_help_flat_map 🔒
iter_help_for_each 🔒
iter_help_map 🔒
iter_help_reduce 🔒
iter_help_some 🔒
iter_help_take 🔒
iter_help_to_array 🔒
iter_result 🔒
iterator_from 🔒
iterator_range 🔒
Iterator.range(start, end, step?)(ES2025 Standard)。数値の範囲シーケンスを生成する。
queue_microtask 🔒
request_animation_frame 🔒
requestAnimationFrame(cb): 次のイベントループでコールバックを実行(timestamp を引数に渡す)。 setTimeout と同じマクロタスク機構に乗せるため cancelAnimationFrame は clearTimeout と共通。
set_interval 🔒
setInterval: コールバックを最大 200 回発火(bare-metal ループ無限防止。 run_intervalsremainingが尽きるかeval完了まで進む有限ループのため、 上限を上げても無限ループにはならない)。以前は上限8回だったため、 実サイト www.sugi-lab.net の統計カウンターアニメーション(increment = target/100を約100回積み上げて最終値へ到達する定番パターン。 .stat-numberの“10+“/“50+”/“200+“表示)が最終値の8%程度で頭打ちになり 正しい数値へ到達できないバグだった(2026-07-22発見・修正)。
set_timeout 🔒