2014-09-06 5 views
-1
function set_worker(){ 

     demo_worker = new Worker("worker.js"); 

     demo_worker.onmessage = function(event){ 
      demo_A = event.data; 
      console.log(demo_A); // success. I get some result 
     } 

    } 
    set_worker(); 
    console.log(demo_A); //undefined. i get undefined.. 

Я хочу получить доступ к «demo_A». Почему demo_Aundefined? Есть ли способ доступа к demo_A?Как я могу получить доступ к переменной в веб-работнике?

+1

Вам нужно показать дополнительную информацию. Когда 'console.log (demo_A)' вызывается в отношении 'set_worker()'? Вероятно, вам стоит поискать какое-то событие внутри вашего 'onmessage' от веб-рабочего, так что любые слушатели знают, что произошло изменение. – CodingIntrigue

+0

Вы никогда не объявляли' demo_A' ... и вам интересно, почему он не определен. –

ответ

1

1. Сделать demo_A глобальным.

Вы определили переменную в функции demo_worker.onmessage(). его контекст останется внутри функции only.Make it global.

2. Триггер какой-либо функции, когда вы получаете сообщение.

demo_A обновляется, когда сообщение было получено так, если вы печатаете demo_A прежде, чем получено сообщение, то оно может быть undefined или может иметь некоторое старое значение.

var demo_A ;//make it global 
somefunction function(){//triggered when msg recieved 
    console.log(demo_A); 
    //do other stuff 
} 
function set_worker(){ 

     demo_worker = new Worker("worker.js"); 

     demo_worker.onmessage = function(event){ 
      demo_A = event.data; 
      console.log(demo_A); 
      somefunction(); // trigger some function 
     } 

    } 
    set_worker(); 
+0

спасибо. Я не знаю, как это сказать ... на самом деле я хочу использовать «demo_A» в основном потоке. в любом случае, спасибо, это мне очень помогает. – user3886365

+0

@ user3886365 Добро пожаловать! Если мой ответ соответствует вашим потребностям, не забудьте принять его (то же самое для других вопросов, которые вы задали :) http://meta.stackexchange.com/a/5235/186921 –

Смежные вопросы