停止执行 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 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何停止将函数保存在jquery中

GridView 上的 jQuery 函数在页面回发后停止工作(鼠标悬停,单击)

jQuery:停止动画加尺寸方法

jQuery 停止动画-jQuery stop()

jquery中stop停止动画笔记

jquery animate 怎么延迟执行