美文网首页
AJAX实现原理

AJAX实现原理

作者: 94very | 来源:发表于2019-06-02 21:01 被阅读0次

           作为一种基础的交互,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

    相关文章

      网友评论

          本文标题:AJAX实现原理

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