Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中使用continuations的库/编译器_Javascript_Continuations - Fatal编程技术网

在JavaScript中使用continuations的库/编译器

在JavaScript中使用continuations的库/编译器,javascript,continuations,Javascript,Continuations,我正在寻找一个JavaScript库/编译器,它允许开发人员使用类似Scheme(或Rhino)中的continuation。例如,此库应允许我们执行以下类似操作: var kont; function add(x,y) { return x + (function() {kont = new Continuation(); return y;})(); } var executed = false; //avoiding infinite recursion show(

我正在寻找一个JavaScript库/编译器,它允许开发人员使用类似Scheme(或Rhino)中的continuation。例如,此库应允许我们执行以下类似操作:

var kont;
function add(x,y) {
  return x +
        (function() {kont = new Continuation(); return y;})();
}

var executed = false;  //avoiding infinite recursion
show(add(5,1));        //show 6

if (!executed) {
  executed = true; 
  kont(20); // show 25 because the "y" binding is changed
}  

var result = cont(20); 
这段代码背后的要点是:a)捕获和b)恢复JavaScript脚本的控制流(或执行)。为了恢复执行,我假设“capture”应该是一个像“kont=newcontinuation()”这样的一级值

我搜索了库,但只找到了jwacs(),但这个项目已经停止。遗憾的是,Babel()不支持它:(


有什么帮助吗?

我想您可能需要的是babel支持的发电机:

要在各种各样的JavaScript实现上实现这一点,底层实现必须能够生成一个作为工件的延续。你不能用一个使用现有标准JavaScript功能的库来伪造这一点。那么,你为什么希望它存在呢?嗯,如果你使用transpiler(源到源编译器),你可以这样做。所以,你可能会发现一个库使用transpiler来引入continuations。一个“transpiler”必须使用目标语言原语来实现它可能拥有的任何概念。解释如果目标语言无法捕获执行状态,它如何实现延续?将代码转换为延续传递样式(CPS)并捕获“k”值(函数(…k))?您好,我认为生成器不允许挂起/停止计算或将计算与另一计算交换。例如,使用continuations,您可以将当前计算替换为“空”continuation(即计算),从而停止程序的执行。