Tôi đang tìm kiếm các cảnh quan thực tế để sử dụng Web Workers API.Các trường hợp sử dụng cho công nhân Web là gì?
Trả lời
John Resig (jQuery nổi tiếng) có a bunch of interesting examples of using web workers here - trò chơi, đồ họa, crypto.
Sử dụng khác là Web I/O - nói cách khác, bỏ phiếu URL trong nền. Bằng cách đó bạn không chặn giao diện người dùng chờ kết quả bỏ phiếu.
Một sử dụng thực tế: trong Bespin, họ đang sử dụng Web Workers để làm nổi bật cú pháp, mà bạn sẽ không muốn chặn chỉnh sửa mã của bạn trong khi bạn đang sử dụng ứng dụng.
Từ Mozilla: Nhân viên một cách hữu ích là cho phép mã của bạn thực hiện các phép tính chuyên sâu cho bộ xử lý mà không chặn luồng giao diện người dùng. Là một ví dụ thực tế, hãy nghĩ đến một ứng dụng có một bảng số # lớn (đây là thế giới thực, BTW - được lấy từ một ứng dụng mà tôi đã lập trình ~ 2 năm trước). Bạn có thể thay đổi một số trong bảng thông qua trường nhập và một loạt các số khác trong các cột khác nhau được tính lại trong một quá trình khá chuyên sâu.
Quy trình làm việc cũ là: Thay đổi #. Nhận được cà phê trong khi JavaScript crunches thông qua những thay đổi cho các số khác và trang web là không phản hồi trong 3 phút - sau khi tôi tối ưu hóa nó vào địa ngục và trở lại. Quay lại với cà phê. Thay đổi số thứ hai. Lặp lại nhiều lần. Nhấp vào nút LƯU.
Quy trình làm việc mới với công nhân có thể là: Thay đổi #. Nhận thông báo trạng thái cho biết có điều gì đó đang được tính toán lại nhưng bạn có thể thay đổi các số khác. Thay đổi nhiều hơn #s. Khi thay đổi xong, đợi cho đến khi trạng thái thay đổi thành "tất cả các phép tính đã hoàn tất, bây giờ bạn có thể xem lại các số cuối cùng và lưu".
Liên kết tuyệt vời! Tôi chưa bao giờ nghe nói về Công nhân ... mmm, Công nhân. (Thời gian để đi tắm nước nóng, dài ...) –
Tôi biết đây là câu trả lời hai tuổi, nhưng tôi chỉ muốn đề cập rằng bạn không nên cần công nhân web cho mụC# 2 (URL bỏ phiếu). XHR xảy ra không đồng bộ và không chặn; không cần chạy các yêu cầu XHR trên một luồng riêng biệt. (Tất nhiên, trong một ứng dụng hiện đại, bạn muốn sử dụng WebSockets thay vì bỏ phiếu.) – josh3736
@ josh3736 - Bạn đúng nhưng bây giờ tôi tò mò muốn thực hiện nhiều yêu cầu đồng bộ XHR song song bằng cách nào đó làm cho trình duyệt không hài lòng?Ngoài ra, bạn cần các nguồn lực địa phương để xử lý các phản hồi XHR, nơi các công nhân có thể hữu ích. – DVK
Tôi đã sử dụng chúng để gửi lượng dữ liệu lớn hơn từ trình duyệt đến máy chủ. Rõ ràng, bạn có thể làm điều này với các cuộc gọi AJAX thông thường, nhưng nếu điều này chiếm một trong các kết nối quý giá trên mỗi tên máy chủ. Ngoài ra, nếu người dùng thực hiện chuyển đổi trang trong quá trình này (ví dụ: nhấp vào một liên kết), các đối tượng JavaScript của bạn từ trang trước sẽ biến mất và bạn không thể xử lý các cuộc gọi lại. Khi một nhân viên web được sử dụng, hoạt động này xảy ra ngoài ban nhạc, vì vậy bạn có một đảm bảo tốt hơn rằng nó sẽ hoàn thành.
Một Use case:
nén/De-nén file ở chế độ nền, nếu bạn có rất nhiều hình ảnh và các tập tin media khác được trao đổi từ các máy chủ ở định dạng nén.
Điều này không nên xảy ra trong JavaScript. Hình ảnh được * đã nén (PNG, JPEG) sử dụng các thuật toán được thiết kế để nén dữ liệu hình ảnh hiệu quả. Việc ném một lớp nén khác lên trên thực tế có thể tăng * kích thước của dữ liệu. Đối với các loại dữ liệu khác (ví dụ: một tệp JSON lớn), trình duyệt phải xử lý nén bằng cách sử dụng gzipping HTTP chuẩn. ** Nếu bạn đang thực hiện nén trong JavaScript, có thể bạn đang * làm sai *. ** – josh3736
Tôi thấy một số người dùng loại bỏ trường hợp sử dụng, nhưng đây là những gì tôi muốn nói. xem xét một ứng dụng như MS word, giống như một trình soạn thảo tài liệu mạnh mẽ thông qua đó bạn có thể nhúng hình ảnh, file nhạc, dữ liệu, excel tờ vv tất cả trong một tập tin. và xem xét rằng bạn có ứng dụng khách dựa trên web và ứng dụng khách trên máy tính để bàn và ứng dụng khách IOS/Android. Đối với loại trường hợp sử dụng này, bạn có thể lưu trữ tất cả nội dung tệp trong một tệp zip và sau đó giải nén tại mỗi máy khách. – sbr
Tôi hy vọng nhận xét trên có ý nghĩa. Vui lòng đưa ra đề xuất của bạn nếu bạn có thể nghĩ ra những cách thông minh hơn để đạt được điều này. – sbr
- 1. Xác định môi trường công nhân web?
- 2. Trường hợp sử dụng cho các chi nhánh mồ côi git là gì?
- 3. Tác nhân người dùng thích hợp để sử dụng cho máy chủ là gì?
- 4. Các trường hợp sử dụng cho các chức năng đóng/gọi lại trong JavaScript là gì?
- 5. Các trường hợp sử dụng cho IdentityHashMap
- 6. Các trường hợp sử dụng không khai báo tên cho tên tệp trong mẫu là gì?
- 7. Các trường hợp sử dụng cho thử nghiệm của Scala 2.9 ... bắt tổng quát là gì?
- 8. Trường hợp sử dụng AOP có thể là gì?
- 9. Trường hợp sử dụng thích hợp cho process.nextTick trong Node.js là gì?
- 10. Trường hợp sử dụng 'respond_to' trong đường ray là gì?
- 11. Trường hợp sử dụng nào cho OWL?
- 12. Trường hợp sử dụng cho Clojure trong các dự án
- 13. Hạn chế sử dụng CPU của công nhân Web?
- 14. Quy trình công nhân cho IIS7 là gì?
- 15. Trường hợp sử dụng của các nhà thầu phụ trong các lớp trừu tượng là gì?
- 16. Giá trị hợp lệ cho trường URL django là gì?
- 17. Sự khác biệt giữa Chủ đề công nhân CLR và Chủ đề công nhân là gì?
- 18. Trường hợp sử dụng cho tính riêng tư kế thừa này là gì?
- 19. Trường hợp sử dụng cho một nhà xây dựng chung là gì?
- 20. Trường hợp sử dụng cho LinkedList
- 21. Trường hợp sử dụng cho C# cho phép sử dụng mới trên một phương thức ảo là gì?
- 22. Các đối số chống lại việc sử dụng Khung JavaScript cho một công ty phát triển trang web là gì?
- 23. Trường hợp sử dụng cho Phân đoạn không có giao diện người dùng là gì?
- 24. Cách ưa thích để thụt lề các trường hợp trong một công tắc là gì?
- 25. Trường hợp sử dụng cho JCA
- 26. Sử dụng trường hợp cho các lớp học chính thức
- 27. Một số trường hợp sử dụng phổ biến để sử dụng Microkernel của Akka là gì?
- 28. PHP Daemon/môi trường công nhân
- 29. Trường hợp sử dụng hợp lệ của goto trong PHP là gì?
- 30. Trường hợp ngoại lệ thời gian chạy thường được sử dụng nhất trong java là gì?
Chúng có được hỗ trợ bởi nền tảng di động/webkit không? – dmp
Không biết chắc chắn, nhưng có thể đoán được. –
@danp Hỗ trợ trình duyệt: http://caniuse.com/webworkers –