[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.

posted @   Zhentiw  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源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)
点击右上角即可分享
微信分享提示