作为一种基础的交互,AJAX是一个非常重要的知识点,也是面试必问,所以在此我进行简单的资料整合,方便自己对知识点的查找。
1. AJAX(asynchronous javascript and xml) 请求
在浏览器端创建一个 XHR 对象,发送 HTTP 请求给网络服务器,服务器与数据库进行交互。
将数据以 XML 或 JSON 发送到 XHR 回调函数,请求会受到同源策略的限制。
XHR 异步底层实现原理是事件循环(Event Loop)。
js 是单线程,但浏览器可以开很多的工作线程处理异步操作。
W3C官网XHR
2. JSON
一种基于文本的数据交互格式
JSON 的三种数据结构
键值对
{
"name": "张三"
}
对象
{
"address": {
"school": "西安邮电大学",
"area": "长安区",
"city": "西安市"
}
}
数组
{
"student": [
{ "name": "汤师爷", "id": "0" },
{ "name": "张麻子", "id": "1" },
{ "name": "黄老爷", "id": "2" }
]
}
JSON 解析
JSON.parse()
JSON 简明指南
3. XML(可扩展标记语言)
历史
gml(通用标记语言)->sgml(标准通用标记语言)->html(超文本标记语言)->xml
XML 数据和 XML 文档只用于组织,存储数据
XML 常用版本(versions)
MSXML2.DOMDocument.6.0
MSXML2.DOMDocument.3.0
MSXML2.DOMDocument
XML 解析方式
DOM 方法(Java 原生)
首先在内存中创建一个Document对象,然后把XML文档读取进来赋值给这个dom对象。
由于dom对象是基于树结构的,所以对dom对象进行遍历即可。对内存中的dom对象可
以进行查询、修改、删除操作,还可以写回原XML文档保存修改。
SAX 方法(Java 原生)
通过parse(file,listener)函数用一个listener对xml文件进行查找,按顺序读取
文档,遍历每个标签,当发现目标标签时,读取标签的属性、结点值等信息并返回。
JDOM 方法
JDOM方法是根据DOM方法的众多繁琐操作进行包装得到的。
DOM4J 方法
解析xml的函数上与JDOM差不多,只不过有几个相同功能的函数名字不同而已,过程
都是一样的,但由于底层使用了Xpath等方法加快了索引,所以检索性能更快。
XML的四种解析方法
4, Event Loop(事件循环)
在 js 中存在同步与异步任务,而像 setTimeout,setInterval,Promise 等,而这些异
步任务中又分为宏任务(macro-task)和微任务(micro-task)
macro-task
setTimeout,setInterval,setImmediate,I/O,UI rendering
micro-task
process.nextTick,Promise,Object.observe,MutationObserver
事件循环时
执行完主执行线程中的任务
取出 micro-task 中任务执行直到清空
取出 macro-task 中一个任务执行
取出 micro-task 中任务执行直到清空
循环 3 和 4
异步执行的运行机制
所有同步任务都会在主线程上执行,形成一个执行栈。
主线程之外,还存在一个任务队列。只要异步任务有了运行结果,就在任务队列中放置一个事件。
当执行栈中的所有同步任务执行完毕,系统就会读取任务队列,结束任务的等待状态,进入执行
栈。
主线程不断循环上述步骤。