ajax的同步与异步

作者: 前端沐先生 | 来源:发表于2017-05-27 10:54 被阅读151次

@拭目以待:首发于ajax的同步与异步

XMLHttpRequest对象支持开启同步或异步两种不同的请求:

var xhr = new XMLHttpRequest();
xhr.open(method, url, async, user, password):

async 类型为 Boolean 值, 设置 true 时代码该请求使用异步, 设置 false 时代码该请求使用同步。
一般情况下 async 都是配置为true(异步), 且当未进行配置时会默认为true; 因为我们平时的业务场景所需要的正是异步请求。

同步与异步的区别

  1. 同步请求在请求完成前,后续的程序将处于暂停执行状态。而异步请求,除过请求事件函数中的程序在特定条件下执行外,请求外的程序会紧接着执行。

  2. 部分属性在同步请求中不可用或受限制,如异步请求可以通过配置属性 timeout 来进行超时设置, 而同步请求则不能配置,如果在同步请求中配置timeout 会抛异常(禁止在同步请求中使用属性 timeout的异常信息)。

这就意味着同步请求会阻断之后所有的代码执行,而这并不是大多项目所期望的场景。

通过 onreadystatechange 事件所捕获的 readyState属性值在同步请求中只会存在1(已调用open方法)与4(请求完成)。

async 参数如何使用

// async = true:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  console.log('readyState=>', xhr.readyState);
};
xhr.open('GET', 'http://www.lovejavascript.com/learnLinkManager/getLearnLinkList', true);
xhr.send(null);
console.log('代码执行到这里了');
// async = false:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  console.log('readyState=>', xhr.readyState);
};
xhr.open('GET', 'http://www.lovejavascript.com/learnLinkManager/getLearnLinkList', false);
xhr.send(null);
console.log('代码执行到这里了');

需要注意:是否为异步执行的效果是从xhr.send(null)之后开始区分的。

如果想了解更多的XMLHttpRequest参数,请查阅XMLHttpRequest参数详解

@拭目以待

个人站点:www.lovejavascript.com
表格管理插件:gridmanager.lovejavascript.com && github地址
QQ交流群 (452781895):How To Make Love
微信公众账号:loveJavascript

《野生前端工程师》专辑中所有文章均为@拭目以待 原创,转载请注明出处。

相关文章

  • AJAX-全集

    同步+异步 Ajax同步+异步 JavaScript之(AJAX) JQuery之(AJAX) JQuery-有f...

  • Ajax 同步与异步

    **Ajax 同步与异步的区别 ** 同步与异步之间究竟有什么不同呢?、 在什么情况下使用呢?同步:提交请求->...

  • 二十一(6)、Ajax中的同步异步编程 ------ 2020-

    1、异步状态的AJax 2、同步状态的Ajax

  • Ajax以及相关知识的资料整理

    Ajax教程异步 vs 同步

  • ajax异步模式下实现同步和等待loading效果(jQuery

    ajax异步模式下实现同步和等待loading效果(jQuery同步Ajax带来的UI线程阻塞问题及解决办法)在与...

  • ajax的同步与异步

    @拭目以待:首发于ajax的同步与异步 XMLHttpRequest对象支持开启同步或异步两种不同的请求: asy...

  • ajax同步与异步

    例如,小明去餐馆排队点餐,前台服务员将小明的菜单告诉厨师进行制作,此时小明后面排队的人就一直等着,直 到厨师制作完...

  • ajax

    ajax async javascript and xml在ajax的异步不是我们理解的同步异步编程,而是泛指局部...

  • ajax

    一、ajax概念: 异步与同步 实现 ajax:1.各种类库和框架实现 后端jsonp处理: 例如: echo ...

  • ajax异步

    ajax异步和同步的设置 属性字段:async,参数为boolean类型。false代表同步,true代表异步

网友评论

    本文标题:ajax的同步与异步

    本文链接:https://www.haomeiwen.com/subject/rwzffxtx.html