推迟点击返回Promise?

时间:2013-07-23 14:27:39

标签: jquery jquery-deferred promise

是否可以使用Jquery differed object结构推迟点击响应?

所以我有一个点击事件,它会触发并调用一个很长的(ish)运行进程,延迟进程。我想仅在延迟过程结束时从点击返回,即

$('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();

但事实并非如此。这甚至是可能还是只是没有这种联系?

1 个答案:

答案 0 :(得分:4)

DeferredPromise之类的异步机制的一个要点是来阻止主JavaScript线程的执行。

不,在jQuery UI click关闭之前,您无法完成dialog处理程序。您的代码确实等待dialog的调用返回(当然),但当然,只需的调用即可打开对话框。

相反,允许处理程序完成(可能停止事件的传播和/或默认操作)并使用对话框的回调来触发您想要执行的任何后续操作。