Gor*_*per 13 javascript js-csp
我正在玩两个优秀的库:js-csp和transducers.js试图绕着它们(和发生器).
我认为我对使用频道有一个很好的理解,但是当我决定将传感器(我还不太了解它)应用到它们时,我似乎无法使它工作.甚至这些例子都不适合我.
我使用的具体的transducers.js文件就是这个,对于js-csp,我编译了自己的(对于许多其他实验一直很好).基本上我用这个编译了一个文件:
import csp from 'js-csp';
window.csp = csp;
Run Code Online (Sandbox Code Playgroud)
使用browserify v.9.0.3和babel v.5.0.8.
这是我期望工作的一些示例代码:
// Make transducer
var xAdd10 = transducers.map(function (x) {
return x + 10;
});
// Make a channel, using the transducer
var ch = csp.chan(2, xAdd10);
// Put a number in the channel
csp.putAsync(ch, 1); // This throws an error
Run Code Online (Sandbox Code Playgroud)
我错过了什么?对我来说,这基本上是一样的我能为JS-CSP的文档中找到这里,和传感器在这里(2日至最后一颗子弹点).
csp库足以帮助抛出堆栈跟踪错误.看起来像这样:
error in channel transformer TypeError: xform.@@transducer/step is not a function
at Object.@@transducer/step (file:///Users/g/code/learning/generators-csp/js/lib/csp.js:1511:44)
at Channel._put (file:///Users/g/code/learning/generators-csp/js/lib/csp.js:1288:57)
at put_then_callback (file:///Users/g/code/learning/generators-csp/js/lib/csp.js:1652:24)
at file:///Users/g/code/learning/generators-csp/js/12-transducers-1.js:21:10
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?一个工作示例(尽可能简单)也非常有用.
这一切都可以在我的github上找到.具体的,与上面的代码相同,这里,csp和换能器可以在js/lib文件夹中找到.
对我来说,这与js-csp文档中的内容基本相同,对于这里的换能器(从倒数第二点到最后一点).
是的,这就是它的记录方式,它应该如何运作.会工作.
问题是你使用旧版本的transducer.js.在此讨论之后,换能器协议方法名称从改变.step为.@@transducer/step等等.对于3.0版本,transducers.js 确实包含了这个,但是您复制到存储库中的/dist/transducers.js文件没有更新.相反,您使用的js-csp确实依赖于新协议 - 并且抛出了预期方法不存在的错误.
因此,如果您手动构建最新版本的transducers.js,它将起作用.我也提交了一个错误 :-)