2015-11-24 34 views
1

我想从异步函数返回一个字符串,但我得到一个未来 我做错了什么;从异步返回字符串

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'.

回答

4

一个与async注释总是会返回一个有前途的功能。

所以当你拨打readUrl(s)你可以await其结果。

要使用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。因此,您转换为async的所有功能现在都会返回Future