首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

响应式脑电波 — 如何使用 RxJS、Angular、Web 蓝牙以及脑电波头戴设备来让我们的大脑做一些更酷的事

(如果你也无法保持平静的话,可选择略过此部分,直接查看下面的代码教程 ;-) 头戴设备配备 Android 或 IOS 应用,甚至还提供了一个库,这样你就可以获取原始数据并构建自己的应用,但这个库只能在原生应用中运行...测量的信号是大脑活动的副作用,可用于检测一般心理状态 (如浓度水平、突发刺激的检测,等等)。...除了大脑活动之外,还可以使用称为眼球电图检查 (幸运的是,我的女朋友就是验光师,她能够教我很多这方面的知识) 的技术来检测眼部运动。...到这里,我们有了一个简单的 RxJS 管道,它用于眨眼检测,但为了实际开始接收数据,我们还需要订阅它。我们从一个简单的 console.log开始: ?...如果我们构建的是 React 应用,可以直接订阅 observable 并在眨眼时更新组件的 state : ? 现在我们做到了!脑电波的 “Hello World” 已经完成! ?

2.2K80
您找到你想要的搜索结果了吗?
是的
没有找到

前端框架 Rxjs 实践指北

想要接入Rxjs,要做整个“管道”的搭建,包括Observable的准备、数据处理、数据订阅,甚至是产生一些副作用(tap),而这些超出了useMemo的承载力。...流,数据订阅后,把数据记录在组件内用作数据渲染,同时当组件销毁时,取消订阅。...'rxjs/operators'; const GreetSomeone = ({ greet = 'Hello' }) => { // 使用React.useRef在组件生命周期保持不变...useEventCallback类似,除了hook返回了被订阅的数据外,还返回了callback,它处理事件响应的情况: const event$ = useConstant(() => new Subject...但本质上,集成Rxjs要解决的问题是一致的: 在哪里做最后消费数据的定义,准备好一个坑位; 流的逻辑:流的构建,流是什么 => 流执行 => 数据订阅,数据赋值; 更好的场景覆盖:如何实现依赖驱动、行为驱动

5.5K20

RxJS速成

下面这个图讲的就是从Observable订阅消息, 并且在Observer里面处理它们: Observable允许: 订阅/取消订阅它的数据流 发送下一个值给Observer 告诉Observer发生了错误以及错误的信息...错误处理 Observable是会发生错误的, 如果错误被发送到了Observer的话, 整个流就结束了. 但是做Reactive编程的话, 有一个原则: Reactive的程序应该很有弹性/韧性....错误处理的Operators: error() 被Observable在Observer上调用 catch() 在subscriber里并且在oserver得到它(错误)之前拦截错误, retry(n)...然后订阅者2, 取消了订阅, 随后subject推送值2, 只有订阅者1收到了. 后来订阅者3也订阅了subject, 然后subject推送了3, 订阅者1,3都收到了这个值....任何在输入observable传递来的错误都会立即发射到输出的observable, 也就是把整个流都杀死了 .

4.2K180

Rxjs 中怎么处理和抓取错误

使用 Rxjs,对于初学者来说,当我们处理 observables 错误的时候容易疑惑,因为我们会考虑使用 try-catch 方式捕获。但是,Rxjs 是通过操作符来管理错误。...但是,在 rxjs 中,try-catch 没用效果。因为错误是发生在订阅范围(subscribe scope),所以 try-catch 解决不了什么,我们需要使用 Rxjs 操作符。...使用 Rxjs 的操作符 Rxjs 提供了一些操作符帮助我们处理这些错误,每个都可以使用在这些场景中,我们来了解下。 我们将接触 catchError,throwError 和 EMPTY。...我们我们想捕获自定义的错误或者后端提示的错误,我们可以使用订阅者中的 error 回调函数。...Rxjs 提供了 EMPTY 常量并返回一个空的 Observable,并未抛出任何的数据到订阅着回调中。

2K10

Rxjs 响应式编程-第四章 构建完整的Web应用程序

这段代码已经有一个潜在的错误:它可以在DOM准备好之前执行,每当我们尝试在代码中使用DOM元素时就会抛出错误。...首先,我们需要探索RxJS中的一个重要概念:冷热Observable。 冷热Observable 无论Observers是否订阅它们,“热”Observable都会发出值。...使用缓冲区和片段,我们设法保持行插入性能,同时保持应用程序的实时性(最大延迟为半秒)。 现在我们已准备好为我们的仪表板添加下一个功能:交互性!...out是一个Observable,当用户将鼠标移动到元素之外时,它会发出false。...除了RxJS,我们将使用两个第三方模块:ws和twit。这种类似的模块都是让我们保持最少的代码。 首先,让我们为我们的应用程序创建一个文件夹,并安装我们将使用的模块。

3.6K10

Angular快速学习笔记(4) -- Observable与RxJS

介绍RxJS前,先介绍Observable 可观察对象(Observable) 可观察对象支持在应用中的发布者和订阅者之间传递消息。 可观察对象可以发送多个任意类型的值 —— 字面量、消息、事件。...用来处理错误通知。错误会中断这个可观察对象实例的执行过程。 complete 可选。用来处理执行完毕(complete)通知。当执行完毕后,这些值就会继续传给下一个处理器。...除了可以在订阅时提供 error() 处理器外,RxJS 还提供了 catchError 操作符,它允许你在管道中处理已知错误。...你可以使用 RxJS 中的 filter() 操作符来找到感兴趣的事件,并且订阅它们,以便根据浏览过程中产生的事件序列作出决定。...可观察对象会区分串联处理和订阅语句,promise只有 .then() 语句 可观察对象的 subscribe() 会负责处理错误,promise会把错误推送给它的子promise ---- 作者:

5K20

浅谈 Angular 项目实战

除此之外,Angular 的文档让我着迷,除了基本的教程之外,其核心知识是最让我津津乐道的地方,不仅可以了解技术内幕,甚至可以学习很多基础知识,都非常实用,对于前端新手以及业余爱好者都有很大的帮助作用。...其中使用 ng build 打包后可能会有资源引用错误的问题,可以看一下使用 ng build 构建后资源地址引用错误的问题。...RxJS(响应式扩展的 JavaScript 版)是一个使用可观察对象进行响应式编程的库,它让组合异步代码和基于回调的代码变得更简单 (RxJS Docs)。...关于异步开发的历史在面试中有遇到过,可以说的东西很多,比如回调函数、Promise、迭代器和生成器、async 和 await,除此之外RxJS 中的可观察对象(Observable)应该是下一个更强大的异步编程方式...需要特别注意的就是,只有当订阅 Observable 的实例时,它才会开始发布值。 订阅时要先调用该实例的 subscribe() 方法,并把一个观察者对象传给它,用来接收通知。

4.6K00

RxJS速成 (上)

下面这个图讲的就是从Observable订阅消息, 并且在Observer里面处理它们: Observable允许: 订阅/取消订阅它的数据流 发送下一个值给Observer 告诉Observer发生了错误以及错误的信息...只有当有人去订阅这个Observable的时候, 整个数据流才会流动. 运行该文件: RxJS Operator(操作符) Operator是一个function, 它有一个输入, 还有一个输出....错误处理 Observable是会发生错误的, 如果错误被发送到了Observer的话, 整个流就结束了. 但是做Reactive编程的话, 有一个原则: Reactive的程序应该很有弹性/韧性....错误处理的Operators: error() 被Observable在Observer上调用 catch() 在subscriber里并且在oserver得到它(错误)之前拦截错误, retry(n)...后边Dave进行了订阅. 2.5秒以后, Nick进行了订阅. 最后结果是:

1.9K40

Rxjs源码解析(一)Observable

Subscriber { // ...}SafeSubscriber继承了 Subscriber,主要作用是对 next、error、complete 三个方法属性进行了一层封装,保证能够更好地进行错误处理..._trySubscribe(subscriber));errorContext也是一个错误处理的包装方法,里面只调用了一个 subscriber.add方法,这个方法的参数用了两个嵌套的三元表达式。..., source);rxjs内部的一些 Subject在某些情况下会执行到第二个逻辑 this...._trySubscribe(subscriber));这个是为了收集 teardown,也就是订阅取消(unsubscribe)的时候执行的收尾/清理方法,比如在订阅里启动了一个轮询方法,那么结束订阅的时候..._teardowns就是用于存放与当前 subscription所有有关的 teardown,可以看到,teardown 除了是一个自定义的清理方法外,还可以是一个 Subscription一个 subscription

1.6K50

调试 RxJS 第2部分: 日志篇

如果你也想和我们一起,翻译更多优质的 RxJS 文章以奉献给大家,请访问下面链接: https://github.com/RxJS-CN/rxjs-articles-translation ? ?...在本文中,我将展示如何以一种不唐突的方式来使用 rxjs-spy 获取详情和有针对性的信息。 来看一个简单示例,示例中使用的是 rxjsrxjs-spy 的 UMD bundles: ?...除了 observable 的 next 和 complete 通知,日志输出还包括了订阅和取消订阅的通知。...的订阅会自动取消订阅 每个日志中的通知都包含接收该通知的订阅者 ( Subscriber )的信息,其中包括订阅订阅的数量和 subscribe 调用的堆栈跟踪: ?...堆栈跟踪指向的是根源的 subscribe 调用,也就是 observable 订阅者的显式订阅

1.2K40

Rxjs 响应式编程-第三章: 构建并发程序

应用程序中的日常并发示例包括在其他活动发生时保持用户界面响应,有效地处理数百个客户的订单。 在本章中,我们将通过为浏览器制作一个用于射击的太空飞船游戏来探索RxJS中的并发性和纯函数。...视频游戏是需要保持很多状态的计算机程序,但是我们将使用Observable管道和一些优秀的RxJS运算符的功能编写我们的游戏,没有任何外部状态。...在复杂的应用程序中,打开通向管道外部状态的大门会导致代码变得复杂,并且很快就会出现错误。解决方案是尽可能多地封装管道内的信息。...它使我们免于编写凌乱的代码来缓存以前的值,从而帮助我们减少了很多错误。 当然,要实现该行为,ReplaySubject会将所有值缓存在内存中。...我们还将介绍一个新的辅助函数isVisible,它有助于滤除坐标在可见屏幕之外的元素。

3.6K30

3 分钟温故知新 RxJS 【创建实例操作符】

这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。 ---- 前不久写了 3 篇关于 RxJS 的入门级文章: 你就是函数响应式编程(FRP)啊?!...【附 RxJS 实战】 为什么说:被观察者是 push 数据,迭代者是 pull 数据? 探秘 RxJS Observable 为什么要长成这个样子?!...在几个月之前,也有两篇关于 RxJS 的探秘: Js 异步处理演进,Callback=>Promise=>Observer 继续解惑,异步处理 —— RxJS Observable RxJS 有很多神奇的东西...create create 肯定不陌生了,使用给定的订阅函数来创建 observable ; // RxJS v6+ import { Observable } from 'rxjs'; /* 创建在订阅函数中发出...' const subscribe = hello.subscribe(val => console.log(val)); empty empty 会给我们一个 空 的 observable,如果我们订阅这个

61440

调试 RxJS 第1部分: 工具篇

关闭调试功能和检查状态,等等 还有一些功能,如果能有就更好了: 它应该支持暂停 observables 它应该支持修改 observables 或 observables 发出的值 它应该支持除控制台之外的日志机制...它应该是可扩展的 它应该采取一些方法来捕获可视化订阅依赖所需的数据 综合考虑这些功能后,我开发了 rxjs-spy 。...当通过调用工具的 spy 方法配置后,它会在 Observable.prototype.subscribe 上打补丁,这样它就能够侦察到所有的订阅、通知和取消订阅。...当然,只有被订阅的 observables 才能通过 spy 进行侦察。 rxjs-spy 公开了一个模块 API 用于在代码中调用,还公开了一个控制台 API 供用户在浏览器的控制台中进行交互。...控制台 API 包含 let 方法,它的作用同 RxJS 中的 let 操作符十分相似。它的实现方式是这样的:调用 let 方法会影响到标记 observable 的当前订阅者和将来的订阅者。

1.3K40
领券