我想从异步函数返回一个字符串,但我得到了一个 Future 我做错了什么;
示例
main() {
String s;
s = dummy("http://www.google.com");
}
String dummy(String s) {
String response;
response = readURL(s);
return response;
}
Future<String> readURL(String requestString) async {
String response = await http.read(requestString);
print(response);
return response;
}
错误:
type '_Future' is not a subtype of type 'String' of 'response'.
最佳答案
使用 async
注解的函数将始终返回 Future。
因此,当您调用 readUrl(s)
时,您可以等待
其结果。
要使用await
,调用者(这里是您的主函数)必须标记为async
。所以最终结果可能如下所示:
main() async {
String s = await dummy("http://www.google.com");
}
Future<String> dummy(String s) async {
String response = await readURL(s);
return (response);
}
Future<String> readURL(String requestString) async {
String response = await http.read(requestString);
print(response);
return(response);
}
这里需要注意的是:如果您在函数中使用 await
,它现在被视为返回 Future
的函数。因此,您转换为异步
的每个函数现在都将返回一个Future
。
关于dart - 从异步返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905268/