JS怎么判断异步是不是执行完成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS怎么判断异步是不是执行完成相关的知识,希望对你有一定的参考价值。

我现在有一个异步执行方法,在一个函数中调用,我需要这个异步方法执行完才让其执行函数下面的代码,其中该异步方法不能修改。我怎么才能知道异步方法执行完,或者有什么方法或者我另外写一个函数调用函数判断

使用jQuery队列就行,执行原理先进先出,按顺序执行。


jQuery(document).queue("message",function ()  
        jQuery.ajax(
            url:ajaxurl,
            data: action:"Show",param:Math.random() , 
            type:"post",
            dataType:"json",
            success:function(jsonNotice)
                var obj = jsonNotice;
                jQuery("#messagebody").empty();
                jQuery.each(obj ,function(i, n) 
                    alert(‘sds’);
                );
                jQuery(document).dequeue("message");
            ,
            error:function()
                //alert("error");
                jQuery(document).queue("message", [] );
            
        );
    );
    jQuery(document).queue("message",function ()  
        jQuery.ajax(
            url:ajaxurl,
            data: action:"returnCount",param:Math.random() , 
            type:"post",
            success:function(str)
                PgCount = str;
                jQuery(document).dequeue("message");
            ,
            error:function()
                jQuery(document).queue("message", [] );
            
        );
     );
      //分页DIV
      jQuery(document).queue("message",function ()  
        if(PgCount>0)
        
            jQuery("#null_face").hide();
            jQuery("#messagepage").pagination(PgCount, 
                callback: pageselectCallback,
                prev_text: '上一页',
                next_text: '下一页',
                items_per_page:5,
                num_display_entries:6,
                current_page:pageindex,
                num_edge_entries:2
            );
            jQuery(document).dequeue("message");
        
        else
        
            jQuery("#null_face").show();
            jQuery("#messagepage").empty();
        
      );
        jQuery(document).dequeue("message");   //触发队列
    
    
    这是一个例子

参考技术A 异步方法中设置一个变量,初始值为false。方法最后设置为true。这样就可以判断是否执行完成。完成了这个变量就变成true了,没完成就还是false 参考技术B 声明一个布尔值的变量初始值为false,在这个异步方法的最后那里改变这变量的值为ture,在外面判断一下就可以了例如:
var flag=false;
function aa()

//异步方法要执行的代码
flag=true;

if(flag)

//异步方法结束要执行的代码

------------------------
不好意思,没看到该异步方法这句。。随便问一下这个异步方法有返回值吗?追问

封装的唉,还没找到这个方法,上面告诉我封装的都在一个包里面,找了下没看到,应该还有一个包,有什么方法快速定位到这个方法么

追答

你用的什么软件打开的,很多软件不是有个编辑-”查找“功能的吗?

追问

eclipse 查找不能查找jar包的吧

追答

只要能打开的都能查找的吧,搜一下看看喽,对eclipse不熟也不清楚啊

追问

试了,可以查找,没找到这个方法,郁闷了

追答

有么有选择查找范围是设定为整个项目

追问

就是设定的查找整个项目啊,不知道怎么回事

追答

不会这个函数引用外网的js文件里面的吧?比如其他网站提供的那些js类库

以上是关于JS怎么判断异步是不是执行完成的主要内容,如果未能解决你的问题,请参考以下文章

js判断异步引入的js文件是否加载完毕

js Promise 等待多个异步操作执行完再去做一些操作

判断JS是否加载完成

如何在一个类中实现异步

jquery如何判断一个文件是不是存在,求关键代码。

网页关闭后js脚本是不是还能继续执行?