首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >何时在jquery的ajax函数中使用async false和async true

何时在jquery的ajax函数中使用async false和async true
EN

Stack Overflow用户
提问于 2013-08-22 03:34:16
回答 2查看 115.2K关注 0票数 33

何时在ajax调用中使用async false或async true。在性能方面,这有什么不同吗?

示例:

代码语言:javascript
复制
$.ajax({
        url : endpoint,
        type : "post",
        async : false,
        success : function(data) {
                if (i==1){  
                getMetricData(data)}

                else if (i==2)
                {
                    capture = data;
                }

        }
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-22 17:49:17

它与性能无关...

当您需要在浏览器传递给其他代码之前完成ajax请求时,将async设置为false:

代码语言:javascript
复制
<script>
    // ...
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
                                  // then go for other codes

    $.ajax(...); // Executed after the completion of the previous async:false request.
</script>
票数 48
EN

Stack Overflow用户

发布于 2021-01-13 19:12:24

在基本术语中,同步请求等待从请求接收响应,然后才允许继续进行任何代码处理。乍一看,这似乎是一件好事,但它绝对不是。

如前所述,当请求正在处理中时,浏览器将停止所有脚本的执行,并呈现UI,因为大多数浏览器的JS引擎(实际上)都是单线程的。这意味着对于您的用户来说,浏览器将显示为无响应,他们甚至可能看到操作系统级别的警告,表明程序没有响应,并询问他们是否应该结束其进程。正是由于这个原因,同步JS已被弃用,您可以在devtools控制台中看到有关其使用的警告。

到目前为止,异步请求的替代方案是更好的做法,应该始终在可能的情况下使用。这意味着您需要知道如何使用回调和/或promises,以便在异步请求完成时处理对它们的响应,以及如何构建JS以使用此模式。关于这一点,已经有很多可用的资源,this, for example,所以我在这里不再赘述。

很少有需要同步请求的情况。实际上,我能想到的唯一一种方法是在beforeunload事件处理程序中发出请求时,即使这样也不能保证它能正常工作。

总而言之。您应该学习并在所有请求中使用异步模式。同步请求现在是一种反模式,它会导致比通常解决的问题更多的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18366118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档