Sobes.tech
Middle

Неге асинхрондуу функция көрсөтүлгөн түрдү дароо кайтарбайт?

sobes.tech AI

AIден жооп

Flutter/Dartтеги асинхрондуу функция көрсөтүлгөн түрдү дароо кайтарбайт, анткени ал убакыт талап кылган операцияны аткарат (мисалы, тармактык суроо, файлды окуу). Операция аяктагандан чейин аткаруу агымын блоктогонго аракет кылбай, асинхрондуу функция дароо Future кайтарат.

Future — бул потенциалдуу маанини же катады көрсөтүүчү объект, ал келечекте жеткиликтүү болот. Ал операциянын аяктооүнө убада кылат, жана ал болгондо, натыйжа же көрсөтүлгөн түрдүн мааниси, же ката болот.

Future колдонуу негизги аткаруу агымына (негизги изоляцияга) башка тапшырмаларды иштетүүнү улантууга мүмкүндүк берет, асинхрондуу операциянын аяктоосун күтпөстөн. Операция аяктагандан кийин, Future бул тууралуу кабар берет, жана катталган код (мисалы, .then() же await аркылуу) натыйжаны иштетип алат.

Мисал:

Future<String> fetchData() async {
  // Узун операциянын имитациясы
  await Future.delayed(Duration(seconds: 2));
  return "Маалымат алынды!";
}

void main() {
  print("Баштоо");
  fetchData().then((data) {
    print(data); // `Future` аяктагандан кийин ишке ашат
  });
  print("Аякталуу"); // Дароо ишке ашат, fetchData күтпөй
}

Бул коддун чыгышы:

Баштоо
Аякталуу
Маалымат алынды!

Бул блоктогон эмес жүрүм-турумду көрсөтөт. Эгер fetchData дароо String кайтарса, программа 2 секунд күтүп, "Аякталуу" деп чыгарар эле. Future мындай блоктоону болтурбайт.