channel.js
v0.0.2
Published
CSP in JavaScript
Downloads
6
Readme
channel
来自clojure世界的csp,用js(web界的C++)实现
使用方法
npm i -S channel.js
const channel = require('channel');
const ch = new channel();
let tosay = [];
let todo = [];
function helloing(){
ch.go(function*(){
let i = 0;
while(true){
i++;
yield ch.take(ch.timeout(1000));
yield ch.put(tosay, "hello world"+i);
}
});
}
function walking(){
ch.go(function*(){
while(true){
yield ch.take(ch.timeout(3000));
yield ch.put(todo, "walking...");
}
});
}
function watchHelloing(){
ch.go(function*(){
while(true){
let msg = yield ch.take(tosay);
console.log(msg);
}
});
}
function watchWorking(){
ch.go(function*(){
while(true){
let msg = yield ch.take(todo);
console.log(msg);
}
});
}
watchWorking();
watchHelloing();
helloing();
walking();
/*
hello world1
hello world2
walking...
hello world3
hello world4
hello world5
walking...
.
.
.
*/
响应式编程
现在我们对回调的描述,不再是基于时间线了,而是基于状态,描述事件的发生是分离的。
感谢大clojure群:130107204
感谢大clojure,一直以来对我的帮助,无论是基本的语法还是这个相对core.async而言比较肤浅的小工具,得到了许多很热心的老手及大牛的帮助。