2014-11-30 21 views
11

Enum gibi deneysel bir özellik olarak 1,8 sürümünde var mı, yoksa değil mi? Ve bunu Dart Editör'de nasıl kullanabilirim? Beni bununla başlatabilecek güzel bir makale veya örnek uygulaması var mı?Async/Await özelliği Dart 1.8

Hala bir deneysel özellik olduğunda, pub paketleri için önerilen nedir? Bu özelliği pub paketlerinde kullanmak güzel midir?

+0

Bkz: http://stackoverflow.com/a/27195775/217408 –

cevap

10

Güncelleme 2

En son gece inşa da bir yöntemde async*

void main() { 
    generate().listen((i) => print(i)); 
} 

Stream<int> generate() async* { 
    int i = 0; 

    for(int i = 0; i < 100; i++) { 
    yield ++i; 
    } 
} 

Güncelleme

yield ve yield* (bir iterable dönen) sync* işaretlenmiş destekler zaten destekli

void main() { 
    var x = concat([0, 1, 2, 3, 4], [5, 6, 7, 8, 9]); 
    // x is an Iterable which iterates over the values 1 to 9 
    print(x); 
} 

// A method marked `sync*` returns an `Iterable` 
concat(Iterable left, Iterable right) sync* { 
    yield* left; 
    yield* right; 
} 
void main() { 
    print(filter([0, 1, 2, 3, 4, 5], (x) => x.isEven)); 
} 

filter(ss, p) sync* { 
    for (var s in ss) { 
    if (p(s)) yield s; 
    } 
} 

async* jeneratör fonksiyonları (Bir Sohbeti dönen) 1.9.0-edge.43534 henüz desteklenmemektedir.

Orjinal

Temel destek zaten mevcuttur.
Daha fazla ayrıntı için https://www.dartlang.org/articles/await-async/ adresine bakın.

main() async { 

    // await 
    print(await foo()); 
    try { 
    print(await fooThrows()); 
    } catch(e) { 
    print(e); 
    } 

    // await for 
    var stream = new Stream.fromIterable([1,2,3,4,5]); 
    await for (var e in stream) { 
    print(e); 
    } 
} 

foo() async => 42; 

fooThrows() async => throw 'Anything';