Web standards

更新时间:2024-08-14 19:50:33

CDNetworks Edge Cloud Apps 函数运行时基于 V8 JavaScript 和 WebAssembly 引擎,并定期更新至最新版本,确保您可以在函数中使用最新的 JavaScript 功能,无需转译器。几乎所有 Google Chrome 稳定版支持的标准内置对象都受支持。

Web 标准和全局 API

以下方法根据Worker Global Scope可用:

Base64 工具方法

atob()

描述: 解码使用 base-64 编码编码的数据字符串。

btoa()

描述: 从二进制数据字符串创建 base-64 编码的 ASCII 字符串。

定时器

setInterval()
setInterval(func: function): number;
setInterval(func: function, delay: number): number;
setInterval(func: function, delay: number, ...args: any[]): number;

参数:

  • func: 要执行的函数。
  • delay (可选): 延迟时间(以毫秒为单位)。
  • ...args (可选): 传递给函数的参数。

返回值: 返回一个数字,表示定时器的 ID。

描述: 安排一个函数在每经过给定的毫秒数后执行。

clearInterval()
clearInterval(intervalID: number): void;

参数:

  • intervalID: 定时器的 ID。

描述: 取消使用 setInterval() 设置的重复执行。

setTimeout()
setTimeout(func: function): number;
setTimeout(func: function, delay: number): number;
setTimeout(func: function, delay: number, ...args: any[]): number;

参数:

  • func: 要执行的函数。
  • delay (可选): 延迟时间(以毫秒为单位)。
  • ...args (可选): 传递给函数的参数。

返回值: 返回一个数字,表示定时器的 ID。

描述: 安排一个函数在给定的时间内执行。

clearTimeout()
clearTimeout(timeoutID: number): void;

参数:

  • timeoutID: 定时器的 ID。

描述: 取消使用 setTimeout() 设置的延迟执行。

注意: 定时器仅在请求上下文中可用。

performance.timeOriginperformance.now()

performance.timeOrigin

描述: 返回高精度时间起点。 Workers 使用 UNIX 纪元作为时间起点,这意味着 performance.timeOrigin 将始终返回 0。

performance.now()

描述: 返回一个 DOMHighResTimeStamp,表示自 performance.timeOrigin 以来经过的毫秒数。 请注意,Workers 有意降低了 performance.now() 的精度,使其返回最后一次 I/O 的时间,并且在代码执行期间不会前进。 实际上,正因为如此,并且因为 performance.timeOrigin 始终为 0,所以 performance.now() 将始终等于 Date.now(),从而在 Worker 内产生一致的时间流逝视图。

EventTargetEvent

描述: EventTargetEvent API 允许对象发布和订阅事件。

AbortControllerAbortSignal

描述: AbortControllerAbortSignal API 提供了一种用于取消异步操作的通用模型。

Fetch 全局

fetch()

描述: 开始从网络获取资源的过程。参考 Fetch API。

注意: Fetch API 仅在请求上下文中可用。

编码 API

TextEncoderTextDecoder 都支持 UTF-8 编码/解码。 TextEncoderStreamTextDecoderStream 类也可用。

URL API

URL API 支持符合 HTTP 和 HTTPS 方案的 URL。

注意:

默认的 URL 类行为与 URL 规范 中记录的不同。

可以使用 url_standard 兼容性标志启用符合规范的 URL 类的新实现。

压缩流

CompressionStreamDecompressionStream 类支持 deflatedeflate-rawgzip 压缩方法。

URLPattern API

URLPattern API 提供了一种基于便捷模式语法匹配 URL 的机制。

Intl

Intl API 允许您将日期、时间、数字等格式化为提供的语言环境(语言和地区)使用的格式。

navigator.userAgent

设置 global_navigator 兼容性标志后, navigator.userAgent 属性可用,其值为 'Cloudflare-Workers'。 例如,这可以用来可靠地确定代码是在 Workers 环境中运行的。

Unhandled promise rejections

当 JavaScript promise 被拒绝而没有附加拒绝处理程序时,全局范围会发出 unhandledrejection 事件。

当 JavaScript promise 拒绝被延迟处理(在 unhandledrejection 事件已经发出后,将拒绝处理程序附加到 promise 之后)时,全局范围会发出 rejectionhandled 事件。

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 的值或错误。
});

navigator.sendBeacon(url[, data])

设置 global_navigator 兼容性标志后, navigator.sendBeacon(...) API 可用于向 Web 服务器发送包含少量数据的 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');

相关参考

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!