Javascript 如何在Rhino中调用continuations?

Javascript 如何在Rhino中调用continuations?,javascript,rhino,continuations,Javascript,Rhino,Continuations,我试着用连续体来处理Rhino,但我发现关于如何做的说明不一。我想在JS中创建和使用continuations 展示了如何从Java以处理异常的形式使用它们(我认为这是错误的看待方式) 显示了一种现在已弃用的使用它们的方法-不再允许显式创建continuations 有人能澄清这一点吗?现在,我可以使用1.7R2发行说明中的4种方法,通过Java端操作,使用Rhino创建JS continuations吗?已经有一段时间了,但我已经解决了,所以最好把它写下来 Rhino中的延续处理仅限于Ja

我试着用连续体来处理Rhino,但我发现关于如何做的说明不一。我想在JS中创建和使用continuations

展示了如何从Java以处理异常的形式使用它们(我认为这是错误的看待方式)

显示了一种现在已弃用的使用它们的方法-不再允许显式创建continuations


有人能澄清这一点吗?现在,我可以使用1.7R2发行说明中的4种方法,通过Java端操作,使用Rhino创建JS continuations吗?

已经有一段时间了,但我已经解决了,所以最好把它写下来

Rhino中的延续处理仅限于Java端—您通过运行支持延续的函数进入JS,并在抛出延续挂起异常或调用引发该异常的Java代码时从Javascript代码返回Java。返回Java代码中的catch

这段代码开始执行一个带有Continuations支持的函数-进入Javascript

try {
    openGlobalContext();
    _globalContext.callFunctionWithContinuations(_func, _scope,
        new Object[0]);
} catch (ContinuationPending pending) {
    _cont = pending;
} finally {
    closeGlobalContext();
}
这段Java代码,当从解释的Javascript调用时,“从”Javascript代码“走出”到引发延续异常的地方。也就是说,
SomeMoreCode()
将运行

public void createContinuation(){
    try {
        openGlobalContext();
        ContinuationPending pending =
            _globalContext.captureContinuation();
        throw pending;
    } finally {
        closeGlobalContext();
    }
    SomeMoreCode();
}

这是我刚才写的一个问题和答案。我不确定这是否使用了您现在引用为不推荐的功能,但对我来说效果很好。如果是这样的话,可能仍然值得使用旧版本,除非它因为一个很好的理由被弃用。谢谢你,乔希!不久前我已经偶然发现了你的博客文章,它真的帮助我度过了难关!不客气。很高兴这有帮助。:)