2015-12-01 22 views
40

Tôi đã cố gắng sử dụng await/async trên phản ứng gốc, nhưng tôi đã gặp phải lỗi mã thông báo không mong muốn.Làm thế nào để sử dụng chờ đợi từ khóa trên phản ứng bản địa?

tôi đã thêm các đòn mã trong tập tin nguồn javascript của tôi:

var value = await AsyncStorage.getItem('STORAGE_KEY'); 

My phản ứng phiên bản bản địa là 0.15.0.

Tôi có cần phải thêm một số cấu hình để sử dụng async/await không?

+0

Bạn đã thử gói nó trong khối thử thử tương tự với tài liệu chưa? –

+0

@NaderDabit Tôi đã thử gói nó trong một thử bắt nhưng kết quả trong cùng một lỗi. – Zack

Trả lời

42

Tôi đang sử dụng không đồng bộ/đang chờ trong ứng dụng gốc phản ứng của mình và không phải làm bất kỳ điều gì để định cấu hình hoặc bật nó trong dự án của tôi. sử dụng của tôi có dạng ...

async getCache(key){ 
    try{ 
     let value = await AsyncStorage.getItem(key); 
     return value.json(); 
    } 
    catch(e){ 
     console.log('caught error', e); 
     // Handle exceptions 
    } 

} 

Note: Nếu bạn sử dụng một chờ đợi bên trong một hàm mà không được khai báo rõ ràng với async, bạn sẽ kết thúc với một lỗi cú pháp thẻ bất ngờ.

+0

Tôi đọc ghi chú phát hành và thấy rằng hỗ trợ babel đã được thêm vào phiên bản 0.16.Tôi nghĩ rằng tại sao tôi thất bại. – Zack

+0

Tôi đang sử dụng 0.14.2 và nó hoạt động cho tôi.Hmmm –

+49

Lưu ý rằng nếu bạn sử dụng 'await' bên trong một hàm không được khai báo rõ ràng với' async', bạn sẽ kết thúc với một lỗi cú pháp 'Unexpected token'. –

6

Tôi có cần phải thêm một số cấu hình để sử dụng async/await không?

Có. async vẫn không phải là phần hoàn thiện của đặc điểm kỹ thuật; chúng hiện được coi là "Giai đoạn 3" (Ứng cử viên).

Bạn có thể bật tất cả đề xuất ngôn ngữ giai đoạn 3 trong .babelrc bằng cách sử dụng stage-3 preset. Ngoài ra, bạn có thể thêm just the async plugin.

5

Nếu bạn có một tập tin .babelrc trong thư mục gốc của dự án của bạn, bạn cần phải thêm "react-native" cài sẵn:

npm i babel-preset-react-native --save-dev

Sau đó, trong tập tin .babelrc bạn thêm dòng sau:

{ 
    "presets": ["react-native"] 
} 

Thông tin thêm here.

1

Sau khi đọc this comment về các vấn đề GitHub phản ứng bản địa, sau đây làm việc cho tôi:

Thêm module NPM sau:

npm install babel-preset-react-native-stage-0 --save

Thêm cấu hình sau để tập .babelrc của bạn:

{ presets: ['react-native-stage-0'] }

Xóa bộ nhớ cache của bạn:

$ watchman watch-del-all 
$ ./node_modules/react-native/packager/packager.sh --reset-cache 
Các vấn đề liên quan