Jquery 延迟点击返回承诺?
是否可以使用该结构延迟单击响应 所以我得到了一个click事件,它触发并调用一个长时间(ish)运行的进程,即延迟进程。我只想在延迟进程完成时从单击返回,即Jquery 延迟点击返回承诺?,jquery,jquery-deferred,promise,Jquery,Jquery Deferred,Promise,是否可以使用该结构延迟单击响应 所以我得到了一个click事件,它触发并调用一个长时间(ish)运行的进程,即延迟进程。我只想在延迟进程完成时从单击返回,即 $('form .modalPopupSearch').click(function (e) { //return once the dialogopen event is complete and not before! $("#divSearching").dialog('open'); }); 我以为只需将pr
$('form .modalPopupSearch').click(function (e) {
//return once the dialogopen event is complete and not before!
$("#divSearching").dialog('open');
});
我以为只需将promise()
添加到此中就可以做到:
$('form .modalPopupSearch').click(function (e) {
//return once the dialogopen event is complete and not before!
$("#divSearching").dialog('open');
}).promise();
但事实并非如此。这是可能的还是只是不以这种方式连接?异步机制(如
延迟和承诺的一个要点是不阻止主JavaScript线程的执行
不,在jQuery UI对话框
关闭之前,不能让单击
处理程序等待完成。您的代码确实等待对对话框的调用返回(当然),但很自然,该调用只会打开对话框
相反,允许处理程序完成(可能停止事件的传播和/或默认操作)并使用对话框的回调来触发您想要执行的任何后续操作。异步机制的一个要点,如延迟
和承诺
是而不是,以阻止主JavaScript线程的执行
不,在jQuery UI对话框
关闭之前,不能让单击
处理程序等待完成。您的代码确实等待对对话框的调用返回(当然),但很自然,该调用只会打开对话框
相反,允许处理程序完成(可能停止事件的传播和/或默认操作),并使用对话框的回调来触发您想要执行的后续操作。不,您不能。你必须马上回来,否则就不回来了。但是,您可以将对承诺对象的引用存储在click事件外部可用的变量中,然后在对话框关闭时解析它。但是请注意,它只会解决一次,所以如果所述事件可以发生多次,那么它将是非常无用的。不,您不能。你必须马上回来,否则就不回来了。但是,您可以将对承诺对象的引用存储在click事件外部可用的变量中,然后在对话框关闭时解析它。但请注意,它只会解决一次,所以如果所说的事件可以发生多次,那将是非常无用的。该死,这就是我所想的。我尝试过你提到的方法,但这破坏了一些自动化测试,因为它认为点击已经返回,但没有等待“后续脚本”完成。谢谢你的邀请answer@Liam:您的自动测试工具应具有等待片刻的功能。例如,Selenium有。是的,它有,但测试人员说这需要很长时间才能实现(@Liam:Nice.:-)好吧,这是一个非常普遍的模式,我想测试人员将不得不应付。:-)该死,我就是这么想的。我尝试过你提到的方法,但这破坏了一些自动化测试,因为它认为点击已经返回,但没有等待“后续脚本”完成。谢谢你的邀请answer@Liam:您的自动测试工具应具有等待片刻的功能。例如,Selenium有。是的,它有,但测试人员说这需要很长时间才能实现(@Liam:Nice.:-)好吧,这是一个非常普遍的模式,我想测试人员将不得不应付。:-)