我具有点击功能,用于用户注销时
$('#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/