pub(crate) fn abort_signal_timeout(
it: &mut Interp,
_t: Value,
a: &[Value],
) -> Result<Value, Value>Expand description
AbortSignal.timeout(ms)(ES2022)。指定ミリ秒後に自動的に abort する
AbortSignal を返す、fetch のタイムアウト実装で最頻出のイディオム。この
エンジンの setTimeout は実時間を計測せずマクロタスクキューに積むだけの
簡略実装のため、正確な実時間待機ではなくキュー順序に従った近似になる
(既存の setTimeout 全体の簡略化と同じ水準)。ネイティブ関数はクロージャで
ms を束縛できないため、AbortController/setTimeout を組み合わせる
JS ソースを組み立てて eval_source で実行する。
AbortSignal.timeout(ms)。以前は c.abort() を引数無しで呼んでおり、
signal.reason が仕様どおりの TimeoutError(DOM Level 4 legacy code
23)ではなく既定の AbortError(code 20)になっていたバグ。
abort_signal_any と同じ「グローバル一時変数経由で Rust 側の値を JS へ
渡す」パターンで、事前に構築した TimeoutError の DOMException を
束縛してから c.abort(reason) を呼ぶ。