javascript – 等待用户事件

参见英文答案 > How do I return the response from an asynchronous call?                                    35个
我正在开发一个javascript类(使用jQuery)来创建自定义弹出窗口,但我无法弄清楚如何“暂停”脚本以等待用户响应(单击“确定”按钮或取消)

这个班是这样的:

function Popup()
{
}

Popup.Show = function(text)
{
    var _response;
    /* code to draw the popup elements*/

    $("#button-ok").on("click",function()
    {
        _response = "ok!"
    }

    return _response
}

例如,如果在警报中使用它,则该方法始终返回“undefined”,因为它不等待用户单击

alert(Popup.Show("hello"))
//return undefined before the popup appears

我尝试使用像这样的while循环:

Popup.Show = function(text)
{
    var _response;
    var _wait = true;

    /* code to draw the window */

    $("#button-ok").on("click",function()
    {
        _wait = false;
        _response = "ok!"
    }

    while(_wait){};

    return _response
}

但不起作用(正如我所料)

那么,我该如何等待用户点击?

谢谢大家

解决方法:

这是典型的JavaScript问题.

$("#button-ok").on("click",function()
{
    _response = "ok!"
}

return _response

现在让我们看看这里发生了什么.您正在为该按钮设置onClick侦听器,并为该事件分配回调函数.将该函数视为传递给另一个函数的参数.它不是直接执行的.

现在,而不是使用像while(_wait){};并强制它执行同步,你应该使用该回调.

 Popup.Show = function(text)
 {

    $("#button-ok").on("click",function()
    {
           drawSomething('ok');
    }

 };

var drawSomthing = function(response) {
 // do something
 };

这是回调的一个很好的开始:http://javascriptissexy.com/

上一篇:Java-JTable右键单击复制/粘贴菜单以一键复制单元格数据


下一篇:带有警告的PHP / Javascript会话超时