Javascript 如何在一个函数中添加两个事件侦听器并返回发生的事件?

Javascript 如何在一个函数中添加两个事件侦听器并返回发生的事件?,javascript,function,dom-events,Javascript,Function,Dom Events,我正在创建一个javascript函数(函数ask(问题)),根据用户按下的按钮返回1或-1 在我使用提示之前: function askOld(question) { var answer; do{ answer=prompt(question); if (answer==="yes") return 1; else if (answer==="no") return -1; }

我正在创建一个javascript函数(函数ask(问题)),根据用户按下的按钮返回1或-1

在我使用提示之前:

function askOld(question)           
{   
    var answer;
    do{ 
        answer=prompt(question);
        if      (answer==="yes") return  1;
        else if (answer==="no") return -1;
    } while (1); 
}
这很难看,但奏效了。所有这些都在函数中是很重要的,因为我需要将其传递给其他函数,并将其存储在变量中

现在,我尝试取消提示,并使用eventListener

function askTest(question)
{   
    var answer;
    document.querySelector('.domanda_intervista').textContent = question;
    document.querySelector('.button_no').addEventListener('click',function(){ 
        console.log("clicked no");
        answer="n";  
    });
    document.querySelector('.button_yes').addEventListener('click',function(){ 
        console.log("clicked yes");
        answer="y";  
    });

    if      (answer==="y") return  1;
    else if (answer==="n") return -1;

    return 2;
}
answerNow=askTest("is this true?");
console.log("answerNow",answerNow);    
但这并不奏效。所以我试着不停地调用它,直到用户按下按钮,但结果并不像预期的那样

do{
    answerNow=askTest("is this true?");
    console.log("answerNow",answerNow);    
}while (answerNow===2)
我在这里寻找现有的问题,但似乎没有人回答这个问题。有人能帮忙吗?
顺便说一句,我来自Python,Javascript对我来说是新的,所以如果有什么我想问的,请道歉,显而易见/愚蠢…

代码不会等待事件侦听器发生或完成。也不能将值从1返回到外部作用域,因为外部代码已经执行,因此没有什么可返回的。从事件监听器内部执行/触发适当的代码如何将提示替换为更用户友好的内容?使用jQuery并不重要,重要的是发生了什么以及解决方案。在这两种情况下,您都希望执行一些异步操作(不阻止代码运行的操作)。Ajax是异步的,因为在运行某些代码之前需要执行某些操作(网络请求)。事件侦听器是异步的,因为在运行某些代码之前需要执行某些操作(用户交互)。因此,两者的实际问题和解决方案是相同的。请注意,第二个链接重复说明了为什么在事件侦听器中修改变量,然后尝试在其外部使用它不会达到预期效果。两者都有解决方案和解释。要么执行事件回调中所需的工作,要么调用执行该操作的函数,要么使用承诺。