gpt4 book ai didi

dart - 对于 "pubsub.stream.listen(print, onDone: (){print(' 完成')})。 ", the "完成 :"never work

转载 作者:IT王子 更新时间:2023-10-29 06:33:33 33 4
gpt4 key购买 nike

从 Redis 获取消息时,onDone:(){print('done')} 从未起作用。

import 'package:dartis/dartis.dart' as redis show PubSub;

void main() async {
final pubsub = await redis.PubSub.connect<String,
String>('redis://localhost:6379');

// Subscribe to some channels and patterns
pubsub
..subscribe(channel: 'dev.dart')
..psubscribe(pattern: 'message');

// Listen for server replies
pubsub.stream.listen(print, onDone: (){
print('done');
});

我想要的只是在收到新消息时使用从 Redis 收到的消息运行自定义函数。紧急求救!

最佳答案

在这个片段中

pubsub.stream.listen(print, onDone: (){
print('done');
});

print 的第一次出现称为撕裂,相当于:

pubsub.stream.listen((event) => print(event), onDone: (){
print('done');
});

您应该看到打印的每个事件。

Stream 发出 MessageEvent - 请参阅 documentation . MessageEvent 具有属性 channelmessage

编写自己的函数来处理事件(例如)

void handleEvent(MessageEvent<String, String> event) => print(event.message);

然后像这样使用它

pubsub.stream.listen((event) => handleEvent(event), onDone: (){
print('done');
});

或者,像这样重新引入撕纸

pubsub.stream.listen(handleEvent, onDone: (){
print('done');
});

关于dart - 对于 "pubsub.stream.listen(print, onDone: (){print(' 完成')})。 ", the "完成 :"never work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060883/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com