我具有点击功能,用于用户注销时

$('#logout').click(function(){

    // update database and tell other users that this person has logged off

});


#logout是链接的ID(退出按钮)

该函数将处理一些ajax / php / database操作+发送一个套接字消息,并且可能很容易花费几毫秒来完成

我可以相信javascript / jquery在实际返回true(打开被单击的链接)之前完成了该功能吗?

还是以一种方法来确保它完成它。以“ return false”开头,然后仅在它从php接收到OK的情况下才返回true?

最佳答案

当某个操作涉及AJAX或任何异步操作时,您将永远无法执行“返回”。否则,您将失去异步的本质。

相反,请移交回调以在完成后执行。或返回一个延迟的对象,并在ajax完成后让它侦听。

$('#logout').click(function(e){
    //store location for later use
    var location = $(this).attr('href');
    //prevent link from being followed for now
    e.preventDefault();
    $.ajax({params}).done(function(e){
        //user logged out, follow link
        window.location = location;
    }
}

//while idle and waiting for ajax to complete
//do a moonwalk...

关于javascript - 如何确保javascript/jquery在返回true(打开链接)之前始终完成click功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10575635/

10-12 00:08
查看更多