Синхронные HTTP-вызовы

#android #flutter #dart

#Android #флаттер #dart

Вопрос:

HTTP-библиотека Dart основана на асинхронных сокетах. Это означает, что любой http-вызов является асинхронным. Из того, что я собрал, вызовы ОС также выполняются асинхронно. У меня есть приложение для Android, которое должно выполнять несколько вызовов на разные веб-страницы, каждая из которых зависит от материала, собранного из предыдущего вызова. Это было бы кошмаром для асинхронного выполнения, и мне было интересно, есть ли какой-либо способ избежать этого.

Комментарии:

1. Асинхронность заразна. Так что нет.

Ответ №1:

Я думаю, вам следует использовать await ключевое слово при вызове чего-либо. Вот пример, взятый из https://dart.dev/codelabs/async-await :

 Future<String> createOrderMessage() async {
  var order = await fetchUserOrder();
  return 'Your order is: $order';
}

Future<String> fetchUserOrder() =>
    // Imagine that this function is
    // more complex and slow.
    Future.delayed(
      Duration(seconds: 2),
      () => 'Large Latte',
    );

Future<void> main() async {
  print('Fetching user order...');
  print(await createOrderMessage());
}
  

Он может использоваться только в async функциях!