Tag: 反应式编程

在Node.js中将三个不同的函数映射到Observable

我是Rxjs的新手。 如果可能,我想遵循最佳做法。 我正在执行三个不同的函数在可观察的返回相同的数据。 在“数据stream”概念之后,我一直认为我需要将这个可观察对象分成三个stream,并继续进行。 这是我的代码,所以我可以停止抽象地说话: // NotEmptyResponse splits the stream in 2 to account based on whether I get an empty observable back. let base_subscription = RxNode.fromStream(siteStream).partition(NotEmptyResponse); // Success Stream to perform further actions upon. let successStream = base_subscription[0]; // The Empty stream for error reporting let failureStream = base_subscription[1]; //Code works up until this […]

听stream言承诺

我一直在阅读有关Observables 。 有一件事我读到,就是它能够像stream一样听。 我试着用下面的代码。 const Rx = require('rxjs/Rx'); Promise = require('bluebird'); let i = 0; function calculate() { return new Promise((resolve, reject) => { setInterval(() => { console.log(++i); resolve(i); }, 5000); }) } let source = Rx.Observable.fromPromise(calculate()); source.subscribe( next => { console.log(next, ' next '); }, err => { console.error(err) }, () => { console.log('done!'); […]

ReactJS包括或导入自定义或外部JavaScript文件

我有一个关于ReactJS的非常基本的问题,以及初学者和中级之间的差异。 我已经在webflow中devise了我的Web应用程序UI,现在正在ReactJS中开发前端应用程序。 所以,现在我有两个名为mordenizr.js和webflow.js的JS文件,我必须将它们导入到我的ReactJS组件和页面JSX文件中。 我想知道如何将外部或自定义JavaScript文件导入到ReactJS中,并且它们处于普通/模糊/缩小的JS,而不是ES6格式。 PS:我已经使用create-react-app创build了项目,所以无法更改或查看webpack&babelconfiguration 谢谢。 问候, 罗希特

TypeError:React.renderToStaticMarkup不是一个函数

我正在学习本教程“用反应构buildSVG图标” http://jxnblk.com/react-icons/ 当我运行命令"npm run build" 这是npm-debug.log 0 info it worked if it ends with ok 1 verbose cli [ '/Users/villat/.nvm/versions/node/v5.0.0/bin/node', 1 verbose cli '/Users/villat/.nvm/versions/node/v5.0.0/bin/npm', 1 verbose cli 'run', 1 verbose cli 'build' ] 2 info using npm@3.3.6 3 info using node@v5.0.0 4 verbose run-script [ 'prebuild', 'build', 'postbuild' ] 5 info lifecycle react-icons@1.0.0~prebuild: react-icons@1.0.0 6 […]

RxJs – 当有可变数量的请求时,如何实现并行HTTP请求

我正在使用Express开发一个Node.js API,使用node-rest-client模块发出http请求。 其中一个开发的API端点是/api/v1/users/:userId ,它返回用户的全部信息,用户信息以及他所属部门的详细信息。 为了得到这个信息,有这个后端REST服务: /users/:userId – 返回带有用户信息和部门ID列表的JSON对象,例如: { "name" : "xxx", "departments" : [1, 5 ,6, 8] } /departments/:departmentId – 具有部门信息的JSON对象 { "id" : x, "name" : "xxx" } 调用/api/v1/users/1需要调用 GET /user/1 – > { "name" : "user1" , "departments" : [1, ,5 ,7 ,8]} 获取部门ID并对/departments/deparmentId进行n次调用 完成所有调用后,编写完整的JSON响应并将其返回。 我想使用RxJs将请求alignment,所以我想用Rx.Observable.zip()就足够了。 重点是,如果我有一个Observable数组,它的大小不固定,表示每个HTTP请求调用,我怎样才能调用Observable.zip() ? 如果在固定的数组中的元素的数量我会这样做: var observables = […]

如何创build一个RxJS缓冲区,将NodeJS中的元素进行分组,但不依赖于永远运行的时间间隔?

我在Rx.Observable.fromEvent中使用Rx.Observable.fromEvent捕获应用程序中的事件。 这些被发送到另一个服务器使用请求( https://www.npmjs.com/package/request )。 为了避免高networking负载,我需要在发送请求之间的给定超时时间内caching这些事件。 问题 使用bufferWithTime(200)将使节点进程保持运行,我不知道应用程序何时完成closuresstream。 有什么办法可以使用Rx缓冲区来说: 当元素1被按下时设定一个计时器 当元素2和3在定时器到期之前到达时,将它们推到数组[1,2,3](缓冲区) 计时器到期时,向pipe道发送[1,2,3]arrays。 如果元素4在计时器到期之后到来,那么设置一个新的计时器并重新开始。 如果没有元件被推动,则不启动将使过程退出的计时器。 我最初的做法是: Rx.Observable .fromEvent(eventEmitter, 'log') .bufferWithTime(200) // this is the issue .map(addEventsToRequestOption) .map(request) .flatMap(Promise.resolve) .subscribe(log('Response received'))

使用Javascript进行反应式编程

我在反应式编程方面有了新的东西,而且我可能会丢失所有这些我无法理解的文章。 其实,我是来自Nodejs,Angularjs,Angular 2和React的JavaScript开发人员。 我做的事 我始终使用promise,用于远程数据读取,本地asynchronousparsing等…更好的可testing性比callback,并符合我的需求。 我理解使用stream 除了特殊的情况外,我无法弄清楚在哪里可以解救我。 这种特殊情况是因为承诺只能解决一次,所以在听stream时我不能使用承诺。 SocketIo的一个例子: io.on('connection', (socket) => { // this works }); io.on('connection').then((socket) => { // this can't work, promise would be resolved only once }); 如果我没有错,我可以使用反应stream来处理这个案件,只需返回一个可观察的。 对 ? 我不明白 我正在学习Angular 2和所有的东西。 实际上,从许多博客,人们使用observables来获取远程数据,我不明白什么可能是使用它的优势,而不是承诺。 事实是,我需要在这两种情况下做一个遥控器,为什么比另一个更多? 这是一个性能问题? 我需要的 如果您已经阅读了整个问题,我需要的是了解在远程数据获取情况下使用响应式编程而不是承诺的优点是什么? 在哪些情况下(其他情况下)比平时使用react native的东西更好?

如何在没有主题的情况下将WS Server正确转向RXJS Api

在Node.js中将着名的ws模块转换为响应式api的正确方法是什么? 我明白,科目可以帮助桥接非react native事件和react native事件,但是他们的问题在于,处理其相关对象的时间要困难得多。 var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 8080 }); var Rx = require('rx'); var connectionMessageSubject = new Rx.Subject(); wss.on('connection', function connection(client) { ws.on('message', function incoming(message) { connectionMessageSubject.onNext({ client: client, message: message }); }); }); 我不能使用它们内置的fromEvent方法,因为它注册了许多不同的事件,当30个或更多的客户端连接时,NodeJS会发出警告。 例如… var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port:8080}); var connectionMessageObservable; //this […]