停止执行 jQuery 函数
Posted
技术标签:
【中文标题】停止执行 jQuery 函数【英文标题】:Stop jQuery function from executing 【发布时间】:2018-11-10 07:47:27 【问题描述】:我想要一个 save 函数来检查是否设置了会话(使用另一个函数)并停止基本函数继续,但该函数似乎继续(以下不可执行):
//1. Base save function
$("#save").click(function (e)
e.preventDefault();
//step 0 check if logged in
checksession();
console.log("teststop"); //just for testing
//steps x continue execution of session exists
);
//2. Session check function
function checksession()
$.ajax(
type: "GET",
url:"xxxx/sessioncheck.php",
dataType: "text",
cache: false,
success: function(data)
if(data == "no")
return;
else //continue
);
【问题讨论】:
$.ajax
是异步的,这意味着下面的代码将继续执行并且不会阻塞。此外,即使这是一个阻塞调用,它也不会起作用,return
仅适用于它被调用的函数。它不会传播到调用的外部函数并导致该函数返回它也不应该它。
【参考方案1】:
让checksession
的AJAX success
回调成为执行“保存”操作(或不执行)的函数
//1. Base save function
$("#save").click(function (e)
e.preventDefault();
//step 0 check if logged in
checksession();
);
//2. Session check function
function checksession()
$.ajax(
type: "GET",
url:"xxxx/sessioncheck.php",
dataType: "text",
cache: false,
success: function(data)
if(data == "no")
console.log( "stop" );
else
console.log( "continue" );
doSave();
);
//3. Perform save operation
function doSave()
//
// proceed with the save operation
//
【讨论】:
【参考方案2】:试试这个:
$("#save").click(function (e)
e.preventDefault();
//step 0 check if logged in
check();
if(check()==true)
continue;
else
stop
console.log("teststop"); //just for testing
//steps x continue execution of session exists
);
//2. Session check function
function check()
var result=false;
function checksession()
$.ajax(
type: "GET",
url:"xxxx/sessioncheck.php",
dataType: "text",
cache: false,
success: function(data)
if(data == "no")
return;
else
result=true;
//continue
);
return result;
【讨论】:
以上是关于停止执行 jQuery 函数的主要内容,如果未能解决你的问题,请参考以下文章