2015-11-23 1 views
-3

В JavaScript у меня есть прослушиватель событий, и у меня есть отдельная функция, которая должна возвращать значение только при запуске слушателя.Создайте функцию, которая возвращается при запуске прослушивателя событий

Пример того, что я ищу:

document.getElementById("myBtn").addEventListener("click", function(){ alert("Hello World!"); }); 



function test(){ 
//check if myBtn has been pressed then return 1; 
//otherwise keep waiting and don't return anything until myBtn is clicked. 
} 

Как я могу сделать что-то вроде этого?

+0

Что вы подразумеваете под "keep waiting"? Механизм JavaScript должен просто прекратить выполнение чего-либо, если эта функция вызывается? –

+2

Почему бы вам просто не поставить тестовую функцию внутри прослушивателя событий 'function()' с помощью оператора 'return'? – ryanpcmcquen

+0

Возможно, я упростил проблему, внутри функции у меня есть еще один прослушиватель событий из chrome webrequest (onBeforeRequest), когда этот прослушиватель запускается, я хочу дождаться результата уведомления из двух кнопок, прежде чем приступить к моему решению о том, что делать с этим веб-запросом. –

ответ

0
var is_button_pressed = 0; 

document.getElementById("myBtn").addEventListener("click", function(){ 
    is_button_pressed = 1; 
}); 



function test(){ 
    return is_button_pressed===1?1:undefined; 
} 
0

Вы могли бы просто использовать тест() внутри исходного слушателя событий, а затем для слушателя событий внутри теста(), использовать замыкание, чтобы проверить значение myBtn, а затем возвращает значение, которое вы хотите.

Честно говоря, я не понимаю точку зрения двух слушателей событий внутри друг друга. Для запроса RESTful, почему вы хотите приостановить запрос. Вы могли бы просто захватить параметры запроса с помощью 1-й кнопки и использовать вторую кнопку для отправки запроса. Это намного проще, чем закодировать и рассуждать.