首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rhino中调用continuations?

如何在Rhino中调用continuations?
EN

Stack Overflow用户
提问于 2015-03-23 15:32:56
回答 1查看 337关注 0票数 1

我正在尝试对Rhino使用continuations,但我发现关于如何做到这一点的说明很复杂。我想在JS中创建和使用continuations。

https://developer.mozilla.org/en-US/docs/New_in_Rhino_1.7R2#Java_API.C2.A0for_Continuations

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

http://wiki.apache.org/cocoon/RhinoWithContinuations

展示了一种现在已经弃用的使用它们的方式--不再允许显式地创建延续。

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

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 19:16:48

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

Rhino中的延续处理仅限于Java端-通过运行支持延续的函数进入JS,并在抛出ContinuationPending异常或调用抛出它的Java代码时从Javascript代码返回到Java语言。返回到Java代码中的catch。

这段代码开始执行一个支持延续的函数-进入Javascript。

代码语言:javascript
复制
try {
    openGlobalContext();
    _globalContext.callFunctionWithContinuations(_func, _scope,
        new Object[0]);
} catch (ContinuationPending pending) {
    _cont = pending;
} finally {
    closeGlobalContext();
}

这段 Javascript代码,当从解释的Javascript调用时,会“离开”Javascript代码到抛出延续异常的地方。也就是说,SomeMoreCode()将运行。

代码语言:javascript
复制
public void createContinuation(){
    try {
        openGlobalContext();
        ContinuationPending pending =
            _globalContext.captureContinuation();
        throw pending;
    } finally {
        closeGlobalContext();
    }
    SomeMoreCode();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29205126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档