2015-11-24 7 views
1

Я хочу вернуть строку из функции async, но я получаю будущее Что я делаю неправильно;Возврат строки из async

Пример

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.

 Смежные вопросы

  • Нет связанных вопросов^_^