flutter - 如何从 Parse 实时查询流中返回一个字符串?
问题描述
我正在使用 Parse 实时查询从服务器获取对象。我终于发现 Subscription 对象是一个流。
我想要一种未来等待行为。我希望我的函数产生实时查询的结果。我怎样才能实现这种行为?
Future<String> isolateLiveQuery(String none) async {
final LiveQuery liveQuery = LiveQuery();
QueryBuilder<ParseObject> query = QueryBuilder<ParseObject>(ParseObject('Color'));
Subscription subscription = await liveQuery.client.subscribe(query);
subscription.on(LiveQueryEvent.create, (value) {
// I want to yield value
});
}
编辑添加计算尝试:
这不能按预期工作,主要是没有等待。
Future<dynamic> isolateLiveQuery(String none) async {
final LiveQuery liveQuery = LiveQuery();
QueryBuilder<ParseObject> query = QueryBuilder<ParseObject>(ParseObject('Color'));
Subscription subscription = await liveQuery.client.subscribe(query);
final c = Completer<String>();
subscription.on(LiveQueryEvent.create, (value) {
String color;
color = value['String'];
c.complete(color);
});
return await c.future;
}
编辑:使用演示代码添加确切的期望结果:
到目前为止,这似乎无法使用实时查询订阅来实现。有没有人知道如何通过实时查询订阅实现以下目标?
Future<double> getRandomValue() async {
var random = Random(2);
await Future.delayed(Duration(seconds: 2));
return random.nextDouble();
}
print('one'); // print instantly
print(await getRandomValue()); // awaits for result
print('two'); // prints after result of last line
解决方案
推荐阅读
- sql - 数据透视表抛出错误:“这里只允许简单的列名”
- date - 在 Mongodb 2.4 版中将时间戳转换为 ISO 日期
- python - 如何使用未调用的实例方法中设置的变量?
- php - 将数据存储到三维数组 PHP
- unicode - 如何使用logstash解析包含不同unicode字符串的字段
- c++ - Need to check for nullptr when make_shared and make_unique is used?
- git - Docker 中的 Composer 未通过私有仓库的验证
- laravel - How to encrypt image using a password preferably using AES or simple encryption in laravel
- ios - Fastlane Unsupported directory name(s) for screenshots/metadata in ‘./metadata’: ar-SA
- python - How to solve the error : Input contains NaN, infinity or a value too large for dtype('float64').?