Khi bạn tạo một nhân viên, nó thực sự được thực thi hai lần. Pass đầu tiên nằm trong ngữ cảnh của đối tượng 'window' toàn cục (nghĩa là bạn có quyền truy cập vào tất cả các chức năng của đối tượng cửa sổ). Cuộc gọi thứ hai thông qua là trong bối cảnh của người lao động có một đối tượng toàn cầu khác, một nơi 'importScripts' tồn tại.
// proper initialization
if('function' === typeof importScripts) {
importScripts('script2.js');
addEventListener('message', onMessage);
function onMessage(e) {
// do some work here
}
}
Lưu ý addEventListener nằm trong câu lệnh if. Nếu bạn đặt nó bên ngoài của nó, gọi lại của bạn sẽ được đăng ký hai lần. Một lần trên cửa sổ 'toàn cầu' và một lần trên toàn cầu của nhân viên.
Mã hóa vui vẻ!
Nguồn
2015-02-20 02:21:01
Làm cách nào để bạn sinh ra công nhân? – Bergi
Nghĩ rằng điều này sẽ sinh ra một công nhân? Đây là cách họ sử dụng nó trong https://code.google.com/p/bitjs/source/browse/unzip.js – netigger
Không, điều này cần phải được bên trong một kịch bản công nhân. Xem https://code.google.com/p/bitjs/source/browse/archive.js#278 về cách họ thực hiện hoặc thực hiện theo các hướng dẫn mà bạn đã liên kết – Bergi