Dart Future İşlemleri Kuralları

Dart Future İşlemleri Kuralları

Asenkron-eşzamansız bir sonuca ihtiyaç duyulduğunda yani tamamlanması uzun sürüyor burada program akışını bekletmek istemiyorum şeklinde bir işlem var ise bu işlem iki şekilde gerçekleştrirlebilir. Program akışı devam ederken bir yandan future işlemleri gerçekleşir ve sonuç geldiğinden program akışına iletilir.

Future tanımlama ve değer bekleme

Future bir değer ya “await” ile yada “then” ile alınabilir. await önde, then ise arkadan bekler.

a. degisken = await donecekDeger();,
await fonksiyonun içinde ise fonksiyonun başına “Future” gövdeden önce de “async” konmak zorundadır.

tanımlama:
Future<dönendegertipi> fonksiyon async {
deger = await digerfuturefonks();
}

değer bekleme:
deger = await digerfuturefonks();

b. donecekDeger().then( (donendeger)=>print(donendeger) );
Bir fonksiyonun içinde sadece “.then” le future bir değer bekleniyor ise fonksiyona “async” konmaz.

tanımlama:
fonksiyon {
digerfuturefonks().then(
(donendeger)=> print(donendeger);

);
}

değer bekleme:
deger = donecekDeger().then( (donendeger)=> donendeger );

c. Çoklu future

Future deleteLotsOfFiles() async => …
Future copyLotsOfFiles() async => …
Future checksumLotsOfOtherFiles() async => …

await Future.wait([
deleteLotsOfFiles(),
copyLotsOfFiles(),
checksumLotsOfOtherFiles(),
]);
print(‘Done with all the long steps!’);

not: futuredir fakat asycn değildir!
Future gatherNewsReports() => Future.delayed(oneSecond, () => news);

Örnek:

then kullanılarak tanımlanan fonksiyon;

runUsingFuture() {
// …
findEntryPoint().then((entryPoint) {
return runExecutable(entryPoint, args);
}).then(flushThenExit);
}

async kullanılarak tanımlanan fonksiyon;

runUsingAsyncAwait() async {
// …
var entryPoint = await findEntryPoint();
var exitCode = await runExecutable(entryPoint, args);
await flushThenExit(exitCode);
}

Hata yakalamalı future örnekleri:

await try-catch

var entryPoint = await findEntryPoint();
try {
var exitCode = await runExecutable(entryPoint, args);
await flushThenExit(exitCode);
} catch (e) {
//hatayı yakala
}

then-catch

HttpRequest.getString(url).then((String result) {
print(result);
}).catchError((e) {
// hata yakala
});

Bir cevap yazın

KAPAT
%d blogcu bunu beğendi: