博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XMLHttpRequest 异步方式和同步方式
阅读量:7082 次
发布时间:2019-06-28

本文共 1172 字,大约阅读时间需要 3 分钟。

一.同步和异步区别

  简单说:同步是阻塞模式,异步是非阻塞模式。

  举个例子:普通B/S模式(同步)AJAX技术(异步)

    同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
    异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

二.XMLHttpRequest 异步方式和同步方式

xmlHttp.open("GET", url, false);//同步方式请求  xmlHttp.open("GET", url, true)//异步

 三.项目举例

     在项目中有时候需要用到XMLHttpRequest,但是什么时候用同步,什么时候用异步,这个有时候差距看不出来,但是有时候错误出现了,还不知道什么原因,有时候正确,有时候执行有错误了。

     以使用XMLHttpRequest来进行上传文件做测试,我们需要先上传文件到服务器,然后保存表单信息并保存上传文件的url。

     以下是正确代码,使用了同步方式。

var fd = new FormData();                fd.append("fileToUpload", top.window.document.getElementById('fileToUpload').files[0]);                var xhr = new XMLHttpRequest();                xhr.open("POST", WEB + "/Thesis/ImportPdf",false);//上传文件到服务器                xhr.send(fd);                xhr.addEventListener("load", uploadComplete(dialog), false); //上传完毕后,保存表单信息以及上传文件路径信息

     上面代码有两处需要往下执行,分别是:xhr.open("POST", WEB + "/Thesis/ImportPdf",false);和xhr.addEventListener("load", uploadComplete(dialog), false);

     如果我们使用xhr.open("POST", WEB + "/Thesis/ImportPdf",true);//异步方式,如果文件小,可能照常本来第二步需要保存路径信息也能取到,但是文件太大,上传需要时间。异步的话,第一步上传文件还没上传完毕,第二步就执行了,但最终我们获取不到上传文件路径信息。所以需要使用阻塞式的同步方式。

 

转载于:https://www.cnblogs.com/bugzone/p/XMLHttpRequest.html

你可能感兴趣的文章
C++的引用类型的变量到底占不占用内存空间?
查看>>
词法分析
查看>>
JavaBean
查看>>
[NOIP2016]换教室
查看>>
week06 12 后端utils cloudAMQP_client.py 安装pika
查看>>
Maven-Standard Directory Layout
查看>>
mvc Html.Editor 自定义模板
查看>>
好的团队,差的团队
查看>>
python lambda表达式
查看>>
S3 exercise -- 文件操作&函数
查看>>
qhfl-3 Course模块
查看>>
Oracle 求昨天 上个月 去年 日期
查看>>
HTML(一)基础
查看>>
Mydumper介绍
查看>>
Vue开发常见问题处理
查看>>
iOS学习笔记30-系统服务(三)蓝牙
查看>>
Java中实现短信发送
查看>>
Effective C# 摘录(4) - 创建二进制组件
查看>>
SSL握手过程
查看>>
在 Linux 中修改 MySQL 或 MariaDB 的 Root 密码
查看>>