2016-11-03 42 views
13

Tôi đang sử dụng [email protected] và tôi muốn để biên dịch mã của tôi để es5, nhưng mỗi khi tôi đang sử dụng async hoặc await từ khóa các lỗi biên dịch với thông điệp rằng:nguyên cảo: không thể tìm thấy tên async/chờ đợi

Cannot find name 'await'. 

Heres my libs: dom, es2015, es2016, es2017.

Mã dụ:

let asyncFn =() => { 
    return new Promise((resolve:Function)=>{resolve(2)}) 
} 
// should log `2` 
console.log(await asyncFn()) 

Những thứ như vậy có thể xảy ra ngay cả với [email protected], tôi đã thử nó, nhưng bằng cách nào đó tôi không thể biên dịch mã của tôi anyway.

+0

Vui lòng đăng mã của bạn. Chức năng của bạn có được đánh dấu bằng 'async' không? –

+0

không, không phải vậy, nhưng tôi không cần đánh dấu phạm vi của tôi là 'không đồng bộ', đúng không? afaik đó chỉ là đường cú pháp cho 'Lời hứa ' – Roomy

+2

[Đọc tài liệu] (https://www.typescriptlang.org/docs/release-notes/typescript-1.7.html):" Hàm không đồng bộ được bắt đầu bằng từ khóa không đồng bộ " – Amy

Trả lời

18

Bạn cần sử dụng asyncFn bên trong một hàm được đánh dấu là chức năng 'không đồng bộ'. Ví dụ:

async someAsyncCode() { 
    let asyncFn =() => { 
     return new Promise((resolve: Function) => { resolve(2); }); 
    } 
    // should log `2` 
    console.log(await asyncFn()); 
} 
+9

Khá gây sốc rằng ngay cả trình biên dịch TypeScript câm cũng không thể đưa ra thông báo lỗi tốt hơn. Một cái gì đó như 'chờ đợi không thể được sử dụng bên ngoài của một phạm vi async' sẽ có được tốt. – user9993

Các vấn đề liên quan