【问题标题】:Cannot call javascript's async functions from nashorn java无法从 nashorn java 调用 javascript 的异步函数
【发布时间】:2019-04-16 00:57:31
【问题描述】:

我想使用 nashorn 从 java 中调用如下的 javascript 函数

async function testSample() {    
    for (var i = 0; i < sample.length; i++) {
        await sample[i]();
    }    
}

所以它将执行示例变量l中的所有函数。但我收到以下错误

Expected ; but found function
async function testSample()() {
  ^ in <eval> at line number 8 at column number 6

nashorn 上是否支持异步函数?

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 在异步之前放一个; 然后尝试
  • @AyushGupta:这不会修复错误。

标签: javascript java nashorn


【解决方案1】:

async 在 ECMAScript 2017 中定义; Nashorn 目前仅支持 ECMAScript 5.1。

因此,您不能直接从 Nashorn 调用此代码。您可以尝试使用Promises 重写它,或者使用 babel 之类的东西将其编译为 ES5。

【讨论】:

  • 所以没有办法调用异步方法。
  • @venkat 不是来自 Nashorn,不。您可以尝试使用Promises 重写代码,或者使用 babel 将其转换为 ES5。
  • Rhino 能做到这一点吗? - @ohlec
  • @venkat 我不这么认为。 Rhino 支持 JavaScript 1.7,这是 Mozilla 的版本控制系统。我不确定它到底对应什么标准,但我很确定它不支持async/await
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2012-02-25
  • 1970-01-01
  • 2014-06-13
  • 2019-10-13
  • 2020-04-20
  • 1970-01-01
相关资源
最近更新 更多