DART- Senkron/Asenkron İşlemler

DART- Senkron/Asenkron İşlemler

DART-Senkron/Asenkron İşlemler adlı yazımla kaldığımız yerden devam ediyoruz.

void main(){
siparisHazirla();
}
siparisHazirla(){
return Future.delayed(Duration(seconds:4),()=>"Siparisiniz alindi");
}
  1. Anonim Fonksiyon: Anonim fonksiyon konusu bir önceki yazımız. Eğer bu konu hakkında bilginiz yoksa buraya tıklayarak konu hakkında bilgi sahibi olabilirsiniz. Fonksiyon almasının nedeni süre dolduğunda yapacağı işlemi bildirmek.

Bu kodları hızlıca inceleyelim.

  • Siparishazirla adlı fonksiyon asenkron bir fonksiyon.
  • String tipinde bir veri döndürüyor.
  • Ve son olarak bu veriyi döndermeden önce 4 saniyelik bir bekletme işlemi yapıyor.
void main(){
siparisVer();
}
siparisVer(){
var siparisDurumu=siparisHazirla();
print("Siparis Durumu: $siparisDurumu");
}
siparisHazirla(){
return Future.delayed(Duration(seconds:4),()=>"Siparisiniz alindi");
}

Hemen burada ne yaptığımızı kodlarımızı nasıl güncellediğimizi açıklayalım.

Siparishazirla adında ve asenkron yapıda bir fonksiyonumuz mevcuttu. Bu fonksiyonumuz bir string döndürüyor ancak döndürmeden önce 4 saniye bekletiyordu.

  • Bu fonksiyonun içerisinde siparisdurumu adlı bir değişken oluşturup
  • Bu değişkene de siparishazirla adlı fonksiyonumuzu atadık.
  • Son olarakta main bloğu içerisinde siparisver adlı fonksiyonumuzu çağırdık.

Gelelim bu hatayı düzeltmeye.

Sadece asenkron yapılarda kullandığımız iki kavramla sizi tanıştırmak isterim; async ve await. Async sadece asenkron yapılarda çalışır. Async kavramının olmadığı yerde await kavramı kullanılamaz. Async, kullanıldığı fonksiyonu geciktirir. Hemen değil bir kaç saniye,dakika veya saat sonra işlem yapmasına izin verir.

void main() {
print(siparisVer());
}
Future<String>siparisVer() async {
var siparisDurumu= await siparisHazirla();
return "SİPARİS DURUMU: $siparisDurumu";
}
Future<String>siparisHazirla(){
return Future.delayed(Duration(seconds:4),()=>"SİPARİSİNİZ HAZIRLANIYOR");
}

Neler yaptık bakalım;

  • Delayed metodu 4 saniye sonra tamamlanacak ve bize bir Future<String> döndürecek.
  • siparisHazirla fonksiyonu delayedden dönen Future<String> yapısını dönderecek
  • siparisVer içerisinde await kullanarak Future<String> yapısının tamamlanmasını bekleyeceğiz.
  • Bu bekleme işlemi bittiğinde ise dönen String türünü siparisDurumu değişkenine kaydediyoruz.
  • Future<String> String tipinde değer döndükleri için fonksiyonların başına geldi.
Future<void> main()async {
print(await siparisVer());
}
Future<String>siparisVer() async {
var siparisDurumu= await siparisHazirla();
return "SİPARİS DURUMU: $siparisDurumu";
}
Future<String>siparisHazirla(){
return Future.delayed(Duration(seconds:4),()=>"SİPARİSİNİZ HAZIRLANIYOR");
}

Bilgisayar Programıcısı-AÖF Yönetim Bilişim Sistemleri/DART&FLUTTER

Bilgisayar Programıcısı-AÖF Yönetim Bilişim Sistemleri/DART&FLUTTER