Dart — возвращает результат из асинхронной функции

#flutter #asynchronous #dart

#flutter #асинхронный #dart

Вопрос:

Я экспериментировал с асинхронным программированием в dart, когда наткнулся на проблему, при которой, когда я помещаю оператор return в Future.отложенная функция, похоже, не возвращает значение.

  void main() {
  perform();
}

void perform() async {
  String result = await firstTask();
  finalTask(result);
}
Future firstTask() async {
  Duration duration = Duration(seconds: 4);
  String result = 'task 2 data';
  await Future.delayed(duration, () {
    print('First Task Completed');
    return resu<
  });
}
void finalTask(String result) {
  print('final task completed and returned $result');
}
 

но если я помещу оператор return resu< вне будущего.отложенная функция возвращает свое значение задаче 3. как,

     void main() {
  perform();
}

void perform() async {
  String result = await firstTask();
  finalTask(result);
}

Future firstTask() async {
  Duration duration = Duration(seconds: 4);
  String result = 'task 2 data';
  await Future.delayed(duration, () {
    print('First Task Completed');
  });
  return resu<
}

void finalTask(String result) {
  print('final task completed and returned $result');
}
 

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

1. return Future.delayed(duration, () { print('First Task Completed'); return resu< );

Ответ №1:

В вашей первой задаче нет оператора return . IDE должна предупреждать вас об этом. Чтобы исправить это, вам нужно сделать

 Future firstTask() async {
  Duration duration = Duration(seconds: 4);
  String result = 'task 2 data';
  return await Future.delayed(duration, () {
    print('First Task Completed');
    return resu<
  });
}
 

Или

 Future firstTask() { // No async here
  Duration duration = Duration(seconds: 4);
  String result = 'task 2 data';
  return Future.delayed(duration, () {
    print('First Task Completed');
    return resu<
  });
}