首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏HarmonyOS NEXT实战

    HarmonyOS NEXT实战:使用Emitter进行线程间通信

    场景介绍:Emitter用于同一进程内相同线程或不同线程间的事件处理,事件异步执行。 使用时需要先订阅一个事件,然后发布该事件,发布完成后Emitter会将已发布的事件分发给订阅者,订阅者就会执行该事件订阅时设置的回调方法。当不需要订阅该事件时应及时取消订阅释放Emitter资源。 : string = 'Emitter.on result is : ' @State onceResult: string = 'Emitter.once result is : ' @State let callback: Callback<emitter.EventData> = (eventData: emitter.EventData) => { console.info emitter.emit(event, eventData); }) Text(this.emitResult) Button('Emitter.off').onClick

    31410编辑于 2025-06-27
  • harmony-utils之EmitterUtil,Emitter工具类

    { AppUtil.init(this.context); }API方法与使用post 发送事件EmitterUtil.post<string>("S123456", "哈哈哈哈哈哈哈哈哈哈", emitter.EventPriority.LOW EmitterUtil.getListenerCount("O123456");LogUtil.error(`获取指定事件的订阅数:${count}`);on 订阅事件,支持Callbackprivate callback: Callback<emitter.GenericEventData (txtStr);};EmitterUtil.on<string>(100, callback);once 单次订阅指定事件,支持Callbackprivate callback: Callback<emitter.GenericEventData

    21400编辑于 2025-06-28
  • 来自专栏HarmonyOS知识集合

    【HarmonyOS NEXT】EventHub和Emitter的使用场景与区别

    并且Emitter也可以在不同线程内调用。Emitter区别于上文中的EventHub的事件ID,定义了一层对象进行约束。除了事件id,还需要设置事件级别。 private event: emitter.InnerEvent = { eventId: this.eventId, priority: emitter.EventPriority.LOW ,示例DEMO参见最后章节:**使用Emitter进行线程间通信EventHub API文档三、EventHub和Emitter的使用场景与区别EventHub是线程内使用的时间广播工具,Emitter Emitter属于重量级的广播工具,封装了优先级和队列的逻辑。 传递的数据内容,必须有包裹成进行约束(emitter.EventData)Emitter监听设置,在on基础上,额外提供了once一次性监听的API。触发之后不需要再手动off取消监听。

    65600编辑于 2025-03-26
  • 来自专栏Nest.js 实战系列

    Nest.js 实战 (十二):优雅地使用事件发布订阅模块 Event Emitter

    本篇文章将详细介绍 @nestjs/event-emitter 在 Nest.js 应用如何使用。 @nestjs/event-emitter 是什么? @nestjs/event-emitter 是一个 Nest.js 的社区模块,基于强大的 eventemitter2 库,它提供了事件发布/订阅的功能,使得在 Nest.js 应用程序中实现事件驱动架构变得简单 具体使用 1、 安装依赖 pnpm add @nestjs/event-emitter 2、 初始化模块 在主模块 AppModule 中,导入 EventEmitterModule 并注册它 import 总结 在 Nest.js 中集成 @nestjs/event-emitter 模块,可以极大地提升应用程序的事件驱动能力。 总体而言,@nestjs/event-emitter 是构建现代、响应迅速且具有高度解耦特性的 Nest.js 应用程序的理想选择。

    82110编辑于 2025-08-15
  • 来自专栏Android开发经验分享

    RxJava之过滤操作符介绍

    ) throws Exception { emitter.onNext("A"); Thread.sleep(1500); emitter.onNext ("D"); Thread.sleep(2000); emitter.onNext("E"); emitter.onComplete(); } ) throws Exception { emitter.onNext("A"); Thread.sleep(500); emitter.onNext( ("D"); Thread.sleep(600); emitter.onNext("E"); emitter.onComplete(); } } ) throws Exception { emitter.onNext("A"); Thread.sleep(500); emitter.onNext(

    53110编辑于 2022-12-19
  • 来自专栏IMWeb前端团队

    Node 中的 events.EventEmitter 模块

    `); }); emitter.emit('hi', 'elvin'); 在上述的例子中,我们通过 emitter.on('hi', func) 的方式注册了 hi 事件的监听函数,通过 emitter.emit const EventEmitter = require('events'); let emitter = new EventEmitter(); emitter.once('hi', (name) `); }); emitter.emit('hi', 'elvin'); emitter.emit('hi', 'leonard'); 上面的例子中只会输出 hi, my name is elvin! emitter.setMaxListeners(n):修改 emitter 的每个事件最多可以绑定的响应函数数量,该方法会修改 emitter. emitter.getMaxListeners():获取 emitter 每个事件最多可以绑定的响应函数数量。

    91510发布于 2019-12-04
  • 来自专栏码农编程进阶笔记

    基于SpringBoot3实现SSE(Server send event)服务端消息推送实战

    = null){ return emitter; } // 判断其他服务器有没有对应的连接,有的话,就算了。直接返回。或者直接转发。 可以通过直接调用或者通过mq推送之类的 emitter = newSseEmitter(300000L); emitter.onTimeout(()->{ ().forEach(emitter -> { try { doSend(emitter,message); } catch 可以通过直接调用或者通过mq推送之类的 emitter = newSseEmitter(300000L); emitter.onTimeout(()->{ ); return emitter; } /** * 推送消息,只需要通过emitter发送即可 */ @GetMapping("/send"

    1.2K10编辑于 2025-08-25
  • 来自专栏好派笔记

    iOS实现爆炸的效果

        CAEmitterLayer *emitter = [CAEmitterLayer layer];     emitter.frame = self.view.bounds;     [self.view.layer addSublayer:emitter];     emitter.renderMode = kCAEmitterLayerAdditive;     emitter.emitterPosition = CGPointMake(emitter.frame.size.width/2, emitter.frame.size.height/2);     CAEmitterCell *cell = 0.4;     cell.velocity = 50;     cell.velocityRange = 50;     cell.emissionRange = M_PI *2.0;     emitter.emitterCells

    97840发布于 2021-10-29
  • 来自专栏Android相关

    RxJava2--基本使用

    Observable.create<Int> { emitter -> Log.e(TAG, "Emitter onNext1... ${Thread.currentThread().name}") emitter.onNext(1) Log.e(TAG, "Emitter onNext2 ${Thread.currentThread().name}") emitter.onNext(2) Log.e(TAG, "Emitter onError (TAG, "Emitter onComplete... Log.e(TAG, "Emitter onNext1...

    1.7K20发布于 2018-12-28
  • 来自专栏Android知识分享

    Android RxJava:一文带你全面了解 背压策略

    ) throws Exception { emitter.onNext(1); emitter.onNext(2); emitter.onNext(3); Log.d(TAG, "发送完成"); emitter.onComplete(); = 1个接口,继承自Emitter // Emitter接口方法包括:onNext(),onComplete() & onError long requested(); // 作用 调用emitter.requested()获取当前观察者需要接收的事件数量 Log.d(TAG, "观察者可接收事件数量 = " + emitter.requested( = " + emitter.requested()); Log.d(TAG, "发送了事件 2"); emitter.onNext(2

    2.3K20发布于 2019-02-22
  • 来自专栏Go语言学习专栏

    8 - AI 服务化 - AI 超级智能体项目教程

    ; } 3)使用 SSEEmiter,通过 send 方法⁠持续向 SseEmitter 发送消息(有点像 IO 操作): @GetMapping("/interview_app/chat/sse/emitter ::completeWithError, // 处理完成 emitter::complete ); // 返回emitterreturn emitter; } 测试接口 开发完成后,我们可以通过 Swagger 接口文档来测试接口功能、验证会话上下文是否正常⁠工作。 = AgentState.IDLE) { emitter.send("错误:无法从状态运行代理: " + this.state); emitter.complete ("执行错误: " + e.getMessage()); emitter.complete(); } catch (Exception

    16010编辑于 2026-03-17
  • 来自专栏Android相关

    RxJava2--多线程调度Scheduler

    Observable.create<Int> { emitter -> Log.e(TAG, "Emitter onNext1... ${Thread.currentThread().name}") emitter.onNext(1) Log.e(TAG, "Emitter onNext2 ${Thread.currentThread().name}") emitter.onNext(2) Log.e(TAG, "Emitter onComplete TAG, "Emitter onNext2... TAG, "Emitter onComplete...

    2.1K40发布于 2018-12-28
  • 来自专栏鸿蒙

    HarmonyOS NEXT跨多个组件之间如何进行数据通信

    事件的不同eventId 标识,避免互相干扰发布事件import { emitter } from '@kit.BasicServicesKit';// 定义一个eventId为1的发送事件,事件优先级为 Lowlet event: emitter.InnerEvent = { eventId: 1, priority: emitter.EventPriority.LOW};let eventData eventDataemitter.emit(event, eventData);订阅事件import { emitter } from '@kit.BasicServicesKit';import { = { eventId: 1};// 收到eventId为1的事件后执行该回调,这里就是编写其他函数let callback = (eventData: emitter.EventData): void (event, callback);promptAction.showToast({ message: JSON.stringify('emitter subscribe success')});

    38210编辑于 2024-12-27
  • 来自专栏菩提树下的杨过

    RxJava2学习笔记(1)

    emitter.onNext("b"); emitter.onNext("c"); emitter.onComplete(); }); emitter.onNext("a"); emitter.onNext("b"); emitter.onNext("c"); emitter.onComplete Observable.create((ObservableOnSubscribe<String>) emitter -> { emitter.onNext("a"); emitter.onNext Observable.create((ObservableOnSubscribe<String>) emitter -> { emitter.onNext("a"); emitter.onError Observable.create((ObservableOnSubscribe<String>) emitter -> { emitter.onNext("a"); emitter.onNext

    86890发布于 2018-03-28
  • 来自专栏前端博客

    vue2升级vue3: Event Bus 替代方案

    /tiny-emitter-vs-mittmitt 和 tiny-emitter 对比分析共同点都支持on(type, handler)、off(type, [handler])和emit(type, 看官方代码案例是tiny-emitter$emit 目前只能从子组件向父组件传值了,event Bus 只有借助第三方库了// eventBus.jsimport emitter from 'tiny-emitter /instance'export default {  $on: (...args) => emitter.on(...args),  $once: (...args) => emitter.once( ...args),  $off: (...args) => emitter.off(...args),  $emit: (...args) => emitter.emit(...args)}具体参看:https  = inject("emitter"); // Inject `emitter`    const mymethod = () => {      emitter.emit("myevent", 100

    2K20编辑于 2022-07-30
  • 来自专栏菩提树下的杨过

    RxJava2学习笔记(3)

    今天来学习下zip(打包)操作 一、zip操作 @Test public void zipTest() { Observable.zip(Observable.create(emitter -> { for (int i = 0; i < 10; i++) { emitter.onNext(100 + i); } }), Observable.create(emitter -> { for (int i = 0; i < 5; i++) { ()发一次数据,这个值就减少,第11,12行,当生产者emitter的requested值为0时,下游就开始报错了,也就是说这时已经达到了消费者的处理极限。 // if (emitter.requested()>0){ // emitter.onNext(i); //

    1.5K60发布于 2018-04-17
  • 来自专栏mySoul

    node工具模块

    http://nodejs.cn/api/events.html#events_emitter_emit_eventname_args 按照监听器的注册顺序,同步调用 emitter.removeAllListeners var EventEmitter = require('events').EventEmitter; var domain = require('domain'); // 域 var emitter1 ); }); emitter1.emit('error', new Error('通过监听器来处理')); // 触发error事件,首先运行error的回调函数,接着运行new Error事件 emitter1 .removeAllListeners('error'); // 移出监听器类绑定的所有的事件 emitter1.emit('error', new Error('通过正常的 domainl来进行处理 ,所以上下文寻找error错误的处理,找到第28行,对于error错误的处理,运行回调函数 }); domain1.remove(emitter1); // 移出域绑定的错误 emitter1.emit

    76340发布于 2018-07-28
  • 来自专栏三流程序员的挣扎

    RxJava Single Completable Maybe 使用和源码阅读

    -> emitter.onSuccess("single success") }).subscribe(observerSingle) just 和 timer 方法仍然可用 Single.just Completable.create(CompletableOnSubscribe { emitter -> emitter.onComplete() }).subscribe(object : Maybe.create(MaybeOnSubscribe<String> { emitter -> emitter.onSuccess("maybe success") emitter.onComplete() }).subscribe(object : MaybeObserver<String> { override fun onSuccess(t: String CompletableCreate 内部的 Emitter 只有 onComplete 和 onError,能发射什么是由这个 Emitter 控制的,在 onComplete 后也切断了联系。

    1.2K20发布于 2018-09-11
  • 来自专栏Porschev[钟慰]的专栏

    Nodejs学习笔记(二)--- 事件模块

    emitter.emit(event, [arg1], [arg2], [...]) emitter.once(event, listener) ? 给some_events注册一个监听后,分两轮调用emitter.emit触发,第二轮会返回false;这表示用emitter.once注册监听和用前面讲的emitter.on注册监听略有不同, emitter.once 触发some_events,输出结果不难发现,用emitter.removeListener移除的第一个和第三个监听都没有再起作用, 想当然是害人地,原来emitter.removeListener的第二个参数是要移除的监听 emitter.removeAllListeners([event]) emitter.removeListener用过了,但一个事件可以有多个监听,需要全部移除时,一个个移除明显不是愉快的做法,不符合偷懒的天性

    1.5K80发布于 2018-01-16
  • 来自专栏SpringCloud专栏

    springboot搭建流式响应应服务,SSE服务端实现

    举例: @RequestMapping("/emitter") public SseEmitter sse(@RequestBody String inputParameter) { SseEmitter emitter = new SseEmitter(); // Simulate asynchronous data retrieval from the database (e); // Handle errors } }).start(); return emitter; } 如以上代码,返回的对象是SseEmitter ,每次调用emitter.send()方法,客户端就会收到一条消息,即一次响应,响应结束的标志是调用emitter.complete方法。 所以即便我读取数据是在new Thread里完成的,在请求该接口时,该方法也不会立即结束,而是阻塞住,等待emitter.complete方法完成。

    5.6K10编辑于 2023-09-06
领券