javascript - Functional Reactive Programming 中如何把一个数组拆成多个事件触发?
大家讲道理
大家讲道理 2017-04-11 09:19:59
[JavaScript讨论组]

怎样用一个数组的返回值来创建更多的触发事件呢?

举个处理文件的例子:

var glob = require('glob');
var Rx = require('rx');
var fs = require('fs');

// 给个初始的表达式
var source = Rx.Observable.just('*.md');

// 列出符合这个表达式的文件
var file = source.map(function(pattern) {
  return Rx.Observable.fromNodeCallback(glob)(pattern);
});

// 对单个文件进行读取操作。实际这里 map 后传入的参数是个数组,但我期望是对数组迭代的单个值
var reader = file.map(function(filename) {
  return Rx.Observable.fromNodeCallback(fs.readFile)(filename);
});

// 最终在这里迭代拿到每个文件的内容
reader.subscribe(function(content) {
  console.log(content);
});

时序大概像下图:

  listStream: ---A--------->
 splitStream: ---aaaaa----->
readerStream: ----bbbbb---->

刚刚接触 Reactive Programming,期望各种场景就都用这个思路试试。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
伊谢尔伦

如果是rx的话直接from就好了,但是glob函数本身就一次callback,会一堆挤在stream一个地方。意义不太大。所以。唯一reactive的地方是reader
另外source没必要包成monad,铁定有的东西

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号