Articles of 响应式编程

什么是“反应”的方式来逐行读取文件

我正在学习使用RxJS的反应式编程,遇到需要逐行读取文件的情况。 其实我解决它使用一个解决scheme喜欢: https://gist.github.com/yvele/447555b1c5060952a279 它的工作原理,但我需要使用一些正常的JS代码将缓冲区的stream转换为线的stream。 (使用上面例子中的“readline”模块) 我想知道是否还有其他的方法可以将Observable of Buffer转换为Observable的行,使用RxJS操作符,喜欢下面的例子。 var Rx = require('rx'); var fs = require('fs'); var lines = Rx.Observable .fromEvent(rl, 'data') // emits buffers overtime // some transforms … .subscribe( (line) => console.log(line), // emit string line by line err => console.log("Error: %s", err), () => console.log("Completed") );

如何在服务器上使用npm时使方法成为被动的

我需要将目录中的文件列表传送给Meteor中的客户端。 到目前为止,我有这样的: if (Meteor.isClient) { Meteor.call('getFiles', function(error, result) { if (error) { throwError(error.reason); } else { console.log(result); } }); } if (Meteor.isServer) { Meteor.methods({ 'getFiles': function getFiles() { var walk = Meteor.npmRequire('walk'); var files = new Array(); var walker = walk.walk('/test', { followLinks: false }); walker.on('file', function(root, stat, next) { files.push(root + '/' + stat.name); […]

如何在公共事件属性上join两个事件stream?

考虑以下两个事件stream。 每个事件都有一个timestamp / ts和value属性。 我想要将这两个事件具有相同时间戳的stream合并到一个具有应用的值转换的结果stream中。 如果一个数据stream缺less一个时间戳(例如下面例子中的黄色ts=3 ),那么该时间戳应该被忽略。 想用诸如xstream或rxjs之类的反应式编程库来解决这个问题。 我对于反应式编程的概念相当陌生,但是如果有人有另外一个build议,我就会全神贯注。 谢谢!