#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<
});
}