AJAX实现原理

2019-06-02  本文已影响0人  94very

       作为一种基础的交互,AJAX是一个非常重要的知识点,也是面试必问,所以在此我进行简单的资料整合,方便自己对知识点的查找。

1. AJAX(asynchronous javascript and xml) 请求

    在浏览器端创建一个 XHR 对象,发送 HTTP 请求给网络服务器,服务器与数据库进行交互。
    将数据以 XML 或 JSON 发送到 XHR 回调函数,请求会受到同源策略的限制。
    XHR 异步底层实现原理是事件循环(Event Loop)。
    js 是单线程,但浏览器可以开很多的工作线程处理异步操作。
a-2-1.PNG

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
    
    异步执行的运行机制
        所有同步任务都会在主线程上执行,形成一个执行栈。
        主线程之外,还存在一个任务队列。只要异步任务有了运行结果,就在任务队列中放置一个事件。
        当执行栈中的所有同步任务执行完毕,系统就会读取任务队列,结束任务的等待状态,进入执行
        栈。
        主线程不断循环上述步骤。

JS事件循环

深入理解 JavaScript 事件循环(一)— event loop

上一篇下一篇

猜你喜欢

热点阅读