1

我有一个点击功能,当用户注销时

$('#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?

4

1 回答 1

5

当操作涉及 AJAX 或任何异步操作时,您永远不能执行 "return"。否则,您将失去异步的本质。

相反,一旦完成,就交出一个回调来执行。或者返回一个延迟对象并让它在 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...
于 2012-05-13T22:11:11.597 回答