javascript – 等待点击事件完成

前端之家收集整理的这篇文章主要介绍了javascript – 等待点击事件完成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
添加点击事件处理程序到elment
$(".elem").click(function(){
       $.post("page.PHP".function(){
         //code1
      })
 })

并触发点击事件

$(".elem").click();
//code2

如何在code1执行后确保code2执行

解决方法

(忽略WebWorkers)JavaScript在单个线程上运行,因此您可以确保code2将始终在code1之后执行.

除非你的代码1执行像Ajax调用或setTimeout()这样的异步操作,否则触发的点击处理程序将会完成,那么代码2将执行,然后(最终)Ajax调用(或setTimeout())的回调,会跑.

编辑:对于您更新的问题,code2将始终在code1之前执行,因为如上所述,异步Ajax回调将在以后发生(即使Ajax响应非常快,它将不会在当前JS完成之前调用回调).

“How i make sure that code2 executes after code1 executes”

使用没有参数的.click()是.trigger(“click”)的快捷方式,但是如果您明确地调用.trigger(),您可以提供将被传递给处理程序的其他参数,可以让您这样做:

$(".elem").click(function(e,callback) {
    $.post("page.PHP".function(){
      //code1

      if (typeof callback === "function")
         callback();
   });
});

$(".elem").trigger("click",function() {
    // code 2 here
});

也就是说,在点击处理程序内测试一个函数是否已经在回调参数中传递,如果是,则调用它.这意味着当事件“自然”发生时不会有回调,但是当您以编程方式触发它并传递一个函数时,该函数将被执行. (请注意,您使用.trigger()传递的参数不一定是一个函数,它可以是任何类型的数据,您可以传递多个参数,但是为此,我们需要一个函数,参见.trigger() doco更多信息.)

演示:http://jsfiddle.net/nnnnnn/ZbRJ7/1/

原文链接:https://www.f2er.com/js/152529.html

猜你在找的JavaScript相关文章