You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tabris.js Playground中async函数示例无法运行,求排查方案

解决Tabris.js Playground中async函数的语法错误问题

看起来你遇到的是JavaScript引擎对顶级async函数的兼容性限制,从报错里的com.eclipsesource.v8.V8ScriptCompilationException能看出来,Playground使用的V8引擎版本可能不支持在全局/顶级作用域直接声明async function,这才抛出了语法错误。

问题根源

简单的hello.js这类示例没有异步逻辑,自然不会触发这个限制;而Tabris自带的示例已经把异步代码放在了合适的上下文里(比如tabris.on('ready')回调),所以能正常运行。你的代码直接在顶级作用域写async function showActionSheet(),旧版V8引擎无法解析这种写法。

解决方案

把你的async函数和异步逻辑包裹在Tabris的ready事件回调里,或者用立即执行异步函数表达式(IIFE)来提供异步上下文,具体有两种常用写法:

写法1:将async函数放在ready回调内

tabris.on('ready', async () => {
  // 在这里定义你的async函数
  async function showActionSheet() {
    // 示例:调用Tabris的ActionSheet异步API
    const selectedAction = await tabris.ActionSheet.open({
      title: 'Select an Option',
      actions: [
        {title: 'Option 1', style: 'default'},
        {title: 'Option 2', style: 'default'}
      ]
    });
    console.log('You selected:', selectedAction.title);
  }

  // 调用async函数
  await showActionSheet();
});

写法2:直接在ready的async回调内写逻辑(更简洁)

如果不需要复用函数,可以直接把异步逻辑写在ready的异步回调里:

tabris.on('ready', async () => {
  const selectedAction = await tabris.ActionSheet.open({
    title: 'Select an Option',
    actions: [
      {title: 'Option 1', style: 'default'},
      {title: 'Option 2', style: 'default'}
    ]
  });
  console.log('You selected:', selectedAction.title);
});

额外检查点

  • 确保async关键字位置正确:是async function 函数名(),而不是function async 函数名()(这种写法会直接报错)
  • 所有依赖异步的操作(比如调用Tabris的异步API)都要放在await后面,并且确保所在的函数是async的

内容的提问来源于stack exchange,提问作者DaveTW-Berlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:09:23