gpt4 book ai didi

flutter - 带有流听的比赛条件

转载 作者:行者123 更新时间:2023-12-03 03:22:53 25 4
gpt4 key购买 nike

我有一个异步功能,如下所示。但是,在完成流侦听之前,内容将返回null。

我开始尝试使用Future.delayed,但是想得更好,想问一下是否有更好的方法来确保它异步?

import 'package:googleapis/drive/v3.dart' as ga;

static Future<String> getContentsFromFile() async {
String content;

ga.Media mediaResponse = await drive.files.get(fileId);

mediaResponse.stream.listen((data) {
print("DataReceived: "+data);
content = data
}, onDone: () async {
print("Task Done");
}, onError: (error) {
print("Some Error");
});
return content;
}

我像这样调用函数
String content = await getContentsFromFile();

最佳答案

编辑:使示例更完整,并处理错误和部分内容。

您可以将Completer用于这种控制流:

import 'dart:async';
import 'package:googleapis/drive/v3.dart' as ga;

static Future<String> getContentsFromFile() async {
Completer<String> completer = Completer();
String content = "";

ga.Media mediaResponse = await drive.files.get(fileId);

mediaResponse.stream.listen((data) {
print("DataReceived: "+data);
content += data;
}, onDone: () async {
print("Task Done");
completer.complete(content);
}, onError: (error) {
print("Some Error");
completer.completeError(error);
});

return completer.future;
}

关于flutter - 带有流听的比赛条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61282809/

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