[Compose] Concurrency + Channel and Reactive programming for JS
Concurrency + Channel (CSP):
Concurrency is a way to run operation in isolated thread, a way to better utilize the CPU resources and handle multi simultaneous task.
Channel provides a way to communicate / sync between isolated thread.
It can help to prevent race conditions and make concurrent programming more manageable and comprehensible.
$(document).ready(function () {
var $btn = $("#btn"),
$list = $("#list"),
clicks = ASQ.csp.chan(),
msgs = ASQ.csp.chan(),
queuedClick;
$btn.click(listenToClicks);
// run go-routines
ASQ().runner(ASQ.csp.go(sampleClicks), ASQ.csp.go(logClick));
// push click event messages into channel
function listenToClicks(evt) {
if (!queuedClick) {
// putAsync will handle event in sequence
queuedClick = ASQ.csp.putAsync(clicks, evt);
queuedClick.then(function () {
queuedClick = null;
});
}
}
// sample clicks channel
function* sampleClicks() {
while (true) {
yield ASQ.csp.take(ASQ.csp.timeout(1000));
yield ASQ.csp.take(clicks);
yield ASQ.csp.put(msgs, "clicked!");
}
}
// subscribe to sampled message channel
function* logClick() {
while (true) {
var msg = yield ASQ.csp.take(msgs);
$list.append($("<div>" + msg + "</div>"));
}
}
});
Reactive programming:
It is suitable for event-driven, and asynchronous data streams. It is a declarative approach to handle async streams of data.
It has operators which you can compose different operators to perform complex logic and results in a maintable and readable codebase.
Main difference between CSP and reactive programming, IMO, it is CSP automaticlly handle backpressure, but for Reactive programming, you need to use operators doing `buffering, dropping, throttling, blocking` operation for you.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2022-10-31 [Typescript] 83. Medium - Subsequence
2022-10-31 [!Typescript] 82. Medium - Combination
2019-10-31 [Kubernetes] Pod Health
2019-10-31 [React] Write a Custom State Hook in React
2019-10-31 [React] Use the React Effect Hook in Function Components
2017-10-31 [RxJS] Marbles Testings
2016-10-31 [Angular2Fire] Firebase auth (Google, Github)