2014-11-30 5 views
11

enum과 같은 실험적 기능으로 1.8 릴리스에 있습니까? 그렇지 않습니다. 그리고 어떻게 다트 편집기에서 사용할 수 있습니까? 저와 함께 시작할 수있는 좋은 기사 또는 예제 응용 프로그램이 있습니까?다트 1.8의 비동기/대기 기능

여전히 실험 기능인 경우 펍 패키지에 권장되는 것은 무엇입니까? pub 패키지에서 그 기능을 사용하는 것이 좋습니까?

+0

참조 http://stackoverflow.com/a/27195775/217408 –

답변

10

업데이트 2

가장 최근 야간 빌드는 또한 방법에 async*

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

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

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

업데이트

yieldyield*은 (반복 가능 반환) sync*을 표시 지원 이미 지원됨

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* 함수 발생기 (스트림을 리턴) 1.9.0-edge.43534 아직 지원되지 않는다.

원래

기본 지원은 이미 사용할 수 있습니다.
자세한 내용은 https://www.dartlang.org/articles/await-async/을 참조하십시오.

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';