ウェブ標準
Cloudflare Workersランタイムは、V8 JavaScriptおよびWebAssemblyエンジンの上に構築されています。Workersランタイムは、少なくとも週に1回、現在のGoogle Chromeの安定版で使用されているV8のバージョンに更新されます。これにより、トランスパイラを使用する必要なく、最新のJavaScript機能を安全に使用できます。
現在のGoogle Chromeの安定版でサポートされている標準の組み込みオブジェクト ↗はすべてサポートされていますが、いくつかの顕著な例外があります:
- セキュリティ上の理由から、以下は許可されていません:
eval()new FunctionWebAssembly.compile↗WebAssembly.compileStreaming↗- バッファパラメータ ↗を持つ
WebAssembly.instantiate WebAssembly.instantiateStreaming↗
Date.now()は最後のI/Oの時間を返します。コード実行中は進行しません。
以下のメソッドは、Worker Global Scope ↗に従って利用可能です:
-
atob()
- base-64エンコーディングを使用してエンコードされたデータの文字列をデコードします。
-
btoa()
- バイナリデータの文字列からbase-64エンコードされたASCII文字列を作成します。
-
setInterval()
- 指定されたミリ秒数が経過するたびに関数を実行するようにスケジュールします。
-
clearInterval()
setInterval()↗を使用して設定された繰り返し実行をキャンセルします。
-
setTimeout()
- 指定された時間内に関数を実行するようにスケジュールします。
-
clearTimeout()
setTimeout()↗を使用して設定された遅延実行をキャンセルします。
-
performance.timeOrigin
- 高解像度の時間の起点を返します。WorkersはUNIXエポックを時間の起点として使用しているため、
performance.timeOriginは常に0を返します。
- 高解像度の時間の起点を返します。WorkersはUNIXエポックを時間の起点として使用しているため、
-
performance.now()
performance.timeOriginから経過したミリ秒数を表すDOMHighResTimeStampを返します。Workersは意図的にperformance.now()の精度を低下させており、最後のI/Oの時間を返し、コード実行中は進行しません。実質的に、これにより、performance.timeOriginが常に0であるため、performance.now()は常にDate.now()と等しくなり、Worker内での時間の経過の一貫したビューを提供します。
EventTarget ↗およびEvent ↗ APIは、オブジェクトがイベントを公開および購読できるようにします。
AbortController ↗およびAbortSignal ↗ APIは、非同期操作をキャンセルするための共通モデルを提供します。
-
fetch()
- ネットワークからリソースを取得するプロセスを開始します。詳細はFetch APIを参照してください。
TextEncoderとTextDecoderはUTF-8エンコーディング/デコーディングをサポートしています。
TextEncoderStream ↗およびTextDecoderStream ↗クラスも利用可能です。
URL APIはHTTPおよびHTTPSスキームに準拠したURLをサポートしています。
CompressionStreamおよびDecompressionStreamクラスは、deflate、deflate-rawおよびgzip圧縮メソッドをサポートしています。
URLPattern APIは、便利なパターン構文に基づいてURLをマッチングするメカニズムを提供します。
Intl APIを使用すると、提供されたロケール(言語と地域)で使用される形式に日付、時刻、数値などをフォーマットできます。
global_navigator互換性フラグが設定されている場合、navigator.userAgent ↗プロパティは、値が'Cloudflare-Workers'で利用可能です。これは、コードがWorkers環境内で実行されていることを信頼性高く判断するために使用できます。
unhandledrejection ↗イベントは、JavaScriptのPromiseが拒否され、拒否ハンドラが添付されていない場合にグローバルスコープによって発生します。
rejectionhandled ↗イベントは、JavaScriptのPromise拒否が遅れて処理されたとき(unhandledrejectionイベントがすでに発生した後にPromiseに拒否ハンドラが添付された後)にグローバルスコープによって発生します。
addEventListener('unhandledrejection', (event) => { console.log(event.promise); // 拒否されたPromise。 console.log(event.reason); // Promiseが拒否された理由またはエラー。});
addEventListener('rejectionhandled', (event) => { console.log(event.promise); // 拒否されたPromise。 console.log(event.reason); // Promiseが拒否された理由またはエラー。});global_navigator互換性フラグが設定されている場合、navigator.sendBeacon(...) ↗ APIは、少量のデータを含むHTTP POSTリクエストをウェブサーバーに送信するために利用可能です。このAPIは、分析や診断情報を非同期的に最善の努力で送信する手段として意図されています。
例えば、次のように置き換えることができます:
const promise = fetch('https://example.com', { method: 'POST', body: 'hello world' });ctx.waitUntil(promise);navigator.sendBeacon(...)を使用して:
navigator.sendBeacon('https://example.com', 'hello world');