dart - 从异步返回字符串

标签 dart dart-async

我想从异步函数返回一个字符串,但我得到了一个 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/

相关文章:

flutter - 如何在 flutter 中制作这样的自定义应用程序栏?

FirebaseAuth 禁用用户检查并注销?

dart - 如何从 Future 返回 Future?或者这在异步库中是禁止的?

dart - 如何更改我的简单异步 Dart 函数以使用新的 async 关键字?

dart - 使用 Dart,如何使用 Future 正确返回 HttpResponse

dart - 如何根据您在Dart中无法控制的流返回Future?

android - 无法在 Android Studio 中激活 Dart Devtools

flutter 动画背景滤波器

flutter - 在 flutter 中强制显示肖像

dart - 等待DONE作业状态-BigQuery的Dart客户端