En Yeni Konular

Dart – Asenkron İşlemler

Asenkron İşlemler

Gerçekleşmesi uzun süren işlemlerede kulladığımız yapılardır. Bu işlemlere server’dan veri getirme, resim upload etme gibi örnekler verebiliriz. Bu işlemleri yaparken uygulamamızın donmaması için ve olaşı işlemlerimize devam edebilmek için asenkron işlemleri kullanırız.

Dosya indirme simulasyonu yapalım

Bu gibi durumların önüne geçmek için Future ve async yapıları kullanırız

Future Kavramı

dart:async kütüphanesi dahil olan Future‘dan başlayalım.

Future genel olarak iki durumda olabilir

  • pending  : Bu durum devam ederken Future işlemi hâla devam ediyordur ve sonuç yoktur.
  • completed – Bu durumda ise sonuç olumsuz veya olumlu olarak geri dönmüştür, bu iki olası sonuca göre işlemlerimizi yaparız

Dosya indirme simulasyonunu Future ile yapalım

Future.then

Future.then fonksiyonunu future nesnelerinden geri dönen sonucu almak için kullanırız. Sonuc olumlu veya olumsuz olabilir iki durumuda göz önünde bulundurmalıyız.

Eeee benim işim bitti ben bu gelen değerle napim ? diye size soruyor gibi düşünebiliriz.

Örnek;

Bu örnekte 3 sny bekleyip, random boolean değer dönen bir simulasyon yaptık, random değer true olursa 100 dönecek ve future olumlu sayılıp değerimiz dönücek, eğer false dönerse hata fırlatıcak ve olumsuz kısmına düşücek.

Zincirleme Future

Future.then aslında bir yeni bir future nesnesi dönderir gelen bu nesneyi kullanarak zincirleme işlemler yapabiliriz.

Future.whenComplete

Future.whenComplete yapısını try-cath blocklarında finally kısmına benzetebiliriz, future işlemlerimizde sonuç ne olursa olsun çalışacak işlemlerimizi burada belitiriz.

.catchError : Bu kısım hata var ise onu yakalaması için

Future.timeout

Bazen işlemlerimizin sonucunun gelmesi çok uzun sürebilir, veya bilgileri getirdiğimiz adress yük altında olduğu için gelmesi sonsuza kadar sürebilir.

Bu gibi durumların üstesinden gelebilmek için future.timeout kullanırız. Eğer işlemimiz şu kadar sürede sonuç alamaz ise hata ver gibi.

async ve await

Yukarıdaki örneklerde Future işlemleri ile, olumlu veya olumsuz değer alıp bunları kullanmayı gördük, ama birden fazla future zincirleme şekilde kullanılmaya başlandığında ortalık karışıp okuması zor bi hale geliyor.

Bu gibi durumların üstesinden gelmek için async ve await kullanabiliriz.

  • await Future işlemlerimizin sonucunu bekle demek
  • await kullanabilmek için içinde bulunduğumuz fonksiyonu async olarak işaretlemeliyiz

async ve await hata yakalama

async ve await kullanırsak hata yakalama işlemlerini normal try – catch – finally ile yaparız.

async ve await zincirleme işlemler

Yukarıdaki zincirleme future örneğini birde async ve await ile yapıp okunurluğunun ne kadar arrtığını görelim.

 

Hakkında Necip Akgöz

İLGİNİZİ ÇEKEBİLİR

Dart – Interface (Arayüzler)

BaşlıklarAsenkron İşlemlerFuture KavramıFuture.thenZincirleme FutureFuture.whenCompleteFuture.timeoutasync ve awaitasync ve await hata yakalamaasync ve await zincirleme işlemler Interface …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir