This question already has answers here:
How do I return the response from an asynchronous call?
(42个答案)
2年前关闭。
我正在开发一个JavaScript类(使用jQuery)以创建自定义弹出窗口,但是我不知道如何“暂停”脚本以等待用户响应(单击“确定”按钮或取消)
该类是这样的:
例如,如果在警报中使用它,则该方法始终返回“undefined”,因为它不等待用户单击
我试图使用while循环是这样的:
但不起作用(正如我预期的那样)
然后,如何等待用户点击?
谢谢大家
现在让我们看看这里发生了什么。您正在为按钮设置一个onClick侦听器,并为该事件分配一个回调函数。将该函数视为传递给另一个函数的参数。它不会直接执行。
现在,您应该使用该回调函数,而不是使用像
这是回调的一个不错的开始:http://javascriptissexy.com/
(42个答案)
2年前关闭。
我正在开发一个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/
08-06 05:43