无法从Nashorn Java调用JavaScript的异步函数

3
我想要在Java中使用Nashorn调用以下类似的JavaScript函数。
async function testSample() {    
    for (var i = 0; i < sample.length; i++) {
        await sample[i]();
    }    
}

所以它将执行变量“sample”中的所有函数。但是我遇到了以下错误

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

nashorn是否支持async函数?

有没有解决这个问题的办法?


在async关键字前放置一个;,然后尝试执行。 - Ayush Gupta
2
@AyushGupta:那样并不能解决错误。 - Cerbrus
1个回答

5

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

因此,您无法直接从Nashorn调用此代码。您可以尝试使用Promise重写它,或者使用类似babel的工具将其编译为ES5。


所以没有办法调用异步方法。 - venkat
@venkat 不是来自Nashorn。你可以尝试使用“Promises”重写代码,或者使用babel将其转换为ES5。 - OhleC
犀牛能做到这一点吗?- @ohlec - venkat
@venkat 我不这么认为。Rhino支持JavaScript 1.7,这是Mozilla的版本控制系统。我不确定它确切对应哪个标准,但我非常确定它不支持async/await - OhleC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接