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 имкон медиҳад, ки чунин бастани барқарор шавад.