コンテンツにスキップ

ウェブ標準


JavaScript標準

Cloudflare Workersランタイムは、V8 JavaScriptおよびWebAssemblyエンジンの上に構築されています。Workersランタイムは、少なくとも週に1回、現在のGoogle Chromeの安定版で使用されているV8のバージョンに更新されます。これにより、トランスパイラを使用する必要なく、最新のJavaScript機能を安全に使用できます。

現在のGoogle Chromeの安定版でサポートされている標準の組み込みオブジェクトはすべてサポートされていますが、いくつかの顕著な例外があります:


ウェブ標準とグローバルAPI

以下のメソッドは、Worker Global Scopeに従って利用可能です:

Base64ユーティリティメソッド

  • atob()

    • base-64エンコーディングを使用してエンコードされたデータの文字列をデコードします。
  • btoa()

    • バイナリデータの文字列からbase-64エンコードされたASCII文字列を作成します。

タイマー

  • setInterval()

    • 指定されたミリ秒数が経過するたびに関数を実行するようにスケジュールします。
  • clearInterval()

    • setInterval()を使用して設定された繰り返し実行をキャンセルします。
  • setTimeout()

    • 指定された時間内に関数を実行するようにスケジュールします。
  • clearTimeout()

    • setTimeout()を使用して設定された遅延実行をキャンセルします。

performance.timeOriginperformance.now()

  • performance.timeOrigin

    • 高解像度の時間の起点を返します。WorkersはUNIXエポックを時間の起点として使用しているため、performance.timeOriginは常に0を返します。
  • performance.now()

    • performance.timeOriginから経過したミリ秒数を表すDOMHighResTimeStampを返します。Workersは意図的にperformance.now()の精度を低下させており、最後のI/Oの時間を返し、コード実行中は進行しません。実質的に、これにより、performance.timeOriginが常に0であるため、performance.now()は常にDate.now()と等しくなり、Worker内での時間の経過の一貫したビューを提供します。

EventTargetEvent

EventTargetおよびEvent APIは、オブジェクトがイベントを公開および購読できるようにします。

AbortControllerAbortSignal

AbortControllerおよびAbortSignal APIは、非同期操作をキャンセルするための共通モデルを提供します。

Fetchグローバル

  • fetch()

    • ネットワークからリソースを取得するプロセスを開始します。詳細はFetch APIを参照してください。

エンコーディングAPI

TextEncoderTextDecoderはUTF-8エンコーディング/デコーディングをサポートしています。

詳細についてはMDNのドキュメントを参照してください

TextEncoderStreamおよびTextDecoderStreamクラスも利用可能です。


URL API

URL APIはHTTPおよびHTTPSスキームに準拠したURLをサポートしています。

詳細についてはMDNのドキュメントを参照してください


圧縮ストリーム

CompressionStreamおよびDecompressionStreamクラスは、deflate、deflate-rawおよびgzip圧縮メソッドをサポートしています。

詳細についてはMDNのドキュメントを参照してください


URLPattern API

URLPattern APIは、便利なパターン構文に基づいてURLをマッチングするメカニズムを提供します。

詳細についてはMDNのドキュメントを参照してください


Intl

Intl APIを使用すると、提供されたロケール(言語と地域)で使用される形式に日付、時刻、数値などをフォーマットできます。

詳細についてはMDNのドキュメントを参照してください


global_navigator互換性フラグが設定されている場合、navigator.userAgentプロパティは、値が'Cloudflare-Workers'で利用可能です。これは、コードがWorkers環境内で実行されていることを信頼性高く判断するために使用できます。

未処理のPromise拒否

unhandledrejectionイベントは、JavaScriptのPromiseが拒否され、拒否ハンドラが添付されていない場合にグローバルスコープによって発生します。

rejectionhandledイベントは、JavaScriptのPromise拒否が遅れて処理されたとき(unhandledrejectionイベントがすでに発生した後にPromiseに拒否ハンドラが添付された後)にグローバルスコープによって発生します。

worker.js
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');