2017-02-12 19 views
12

Có an toàn khi sử dụng async-await trong Javascript thay vì máy phát điện hứa hẹn ngay bây giờ, biết rằng cú pháp chưa được thực hiện và sẽ đến cùng với bản phát hành ES8?Bạn có an toàn khi sử dụng async/await ngay bây giờ không?

Tôi có thể tin cậy vào các trình duyệt nào trên trình duyệt và các trình duyệt mà cú pháp này không khả dụng ở mức nào? Bởi an toàn tôi có nghĩa là không có một số transpilers như babel?

+2

"an toàn" có nghĩa là gì? An toàn cho ai, ở đâu, chống lại khả năng nào? – IMSoP

+0

Cú pháp sẽ không thay đổi, nhưng bạn sẽ muốn sử dụng transpilers trong một thời gian dài. Có "an toàn" có nghĩa là có hoặc không có transpilation? – loganfsmyth

+0

'không có một số transpilers' - môi trường bạn muốn là 'an toàn' trong là gì? trình duyệt? chắc chắn không, hầu như không bao giờ cho đến khi thế giới quyết định rằng internet explorer là cuối cùng ** chết ** - nút, không hỗ trợ nó (chưa) –

Trả lời

20

Có hai nơi tôi kiểm tra bất cứ khi nào tôi có thắc mắc như thế này:

Các Tôi có thể sử dụng website: http://caniuse.com/#search=await

Node Xanh: http://node.green/#async-functions

Điển hình là một câu trả lời là khuyến khích bao gồm các thông tin liên quan để tránh bị thối liên kết. Nhưng trớ trêu thay câu trả lời này có chính xác vấn đề ngược lại: câu trả lời này sẽ thối (thông tin dưới đây sẽ trở thành không hợp lệ) lâu trước khi các liên kết ở trên. Vì vậy, luôn luôn kiểm tra caniuse và node.green đầu tiên:

Từ caniuse.com như của tháng 2 năm 2017:

  • IE: không được hỗ trợ (sử dụng nhiều nhất phiên bản = 11)
  • Cạnh *: Từ phiên bản 15 (phiên bản sử dụng nhiều nhất = 14)
  • Firefox: Từ phiên bản 52 (sử dụng nhiều nhất phiên bản = 50)
  • Chrome: Từ phiên bản 55 (sử dụng nhiều nhất phiên bản = 55)
  • Safari: Từ phiên bản 10.1 (sử dụng nhiều nhất phiên bản = 10)
  • Opera: Từ phiên bản 42 (sử dụng nhiều nhất phiên bản = 42)
  • iOS Safari *: không được hỗ trợ (sử dụng nhiều nhất phiên bản = 10,2)
  • Opera Mini *: không được hỗ trợ
  • Trình duyệt Android *: không được hỗ trợ (hầu hết sử dụng phiên bản = 4,4)
  • Chrome dành cho Android: Từ phiên bản 55 (sử dụng nhiều nhất phiên bản = 55)

Từ node.green như của tháng hai năm 2017

  • Node.js: Từ phiên bản 8.0.0

Vì vậy, tùy thuộc vào những gì bạn cho là chấp nhận được, an toàn hoặc không an toàn. Lưu ý rằng hầu hết các thiết bị di động không hỗ trợ và vào tháng 2 năm 2017, hầu hết các cài đặt node.js đều là phiên bản 6 với một số bắt đầu chuyển sang phiên bản 7 (một số thư viện dường như gặp sự cố với nút 7) và cả hai phiên bản đều không hỗ trợ async/await. Nút 8 chưa được phát hành và chỉ có sẵn dưới dạng bản dựng hàng đêm.

+0

Đã thêm phiên bản được sử dụng nhiều nhất cho dữ liệu caniuse. Dường như trình duyệt được sử dụng nhiều nhất trên thế giới là Chrome dành cho Android với mức sử dụng toàn cầu khoảng 25% – slebetman

+0

Theo [ghi chú phát hành] (https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/RevisionHistory .html # // apple_ref/doc/uid/TP40014305-CH99-SW1), Safari 10.1 đã thêm hỗ trợ cho ECMAScript 2016 và ECMAScript 2017 trong Safari cho macOS * và iOS *, bao gồm hỗ trợ cho async và đang chờ. –

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