Function
运行自定义 TypeScript 或 JavaScript 代码
Function 区块运行 TypeScript 或 JavaScript 语句,用于转换数据、执行计算和调用外部服务。TypeScript 会在执行前转译为 JavaScript。此区块不支持 Python。
编写代码
直接在代码编辑器中输入语句。系统自动提供异步包装,因此可以使用 await 和 return,无需再声明包装函数。
使用包含来源的标签引用上游输出。系统不会自动提供填充数据的 input 对象。
const customers = <api.data.customers>;
const activeCustomers = customers.filter((customer) => customer.active);
console.log('Active customers:', activeCustomers.length);
return activeCustomers;请使用实际的来源区块名称和输出路径。工作流变量使用 <variable.name>,环境变量使用 {{VARIABLE_NAME}}。
执行环境
根据部署的 E2B 系统服务配置,代码在隔离的本地 JavaScript VM 或 E2B JavaScript 沙盒中执行。没有区块级 Remote Code Execution 开关或语言选择器。管理员负责配置 E2B 服务及其 API 密钥,区块字段不能启用该服务。
- 代码默认超时为 180 秒。工作流限制可能更早终止整个运行。
- 可以使用
fetch()发起 HTTP 请求,但须遵守运行环境的 URL 限制。 - 外部导入需要 E2B 运行环境支持,本地 VM 不支持。
console.log()的内容会记录在stdout中。
可用指标定义请参阅指标。Function 代码可通过 await indicator.RSI(<historical_data>, { Length: 7 }) 传入完整的 Historical Data 输出。不要仅传入标量价格序列,也不要直接导入 PineTS。
输出
| 引用 | 说明 |
|---|---|
<function.result> | 代码返回的值 |
<function.stdout> | 捕获的控制台输出 |
错误会导致区块失败。请使用错误路径连接处理执行失败,或在能够安全恢复时在代码中捕获错误。
示例:更新计数器
先在 Function 中计算新值,再用 Variables 区块赋值为 <function.result>:
return <variable.retryCount> + 1;