zoukankan      html  css  js  c++  java
  • XMLHttpRequest对象垃圾回收

    XMLHttpRequest对象

    function getData(){

      var xmlhttp = new XMLHttpRequest();

      xmlhttp.onreadystatechange = handler;

      xmlhttp.open(method, url, async);

      xmlhttp.send(data);

    }

    XMLHttpRequest对象的5种状态

    UNSET(数字值为 0)

    对象已创建。

    OPENED(数字值为 1)

    open() 方法已经成功调用。在此期间可以使用 setRequestHeader() 方法来设置请求头,并且可以调用 send() 方法来请求。

    HEADERS_RECEIVED(数字值为 2)

    所有的重定向都已经跳转(如果有的话),并且已经接收到了所有的HTTP响应头。

    LOADING(数字值为 3)

    响应的主体部分正在接收。

    DONE(数字值为 4)

    数据传输已经完成或者传输过程中出现错误(例如无限重定向)。

    初始的 XMLHttpRequest 对象为UNSET状态。

    send() 标志表示 send() 方法已经被调用。它初始状态不被设置,在 OPENED状态期间被调用。

    XMLHttpRequest对象垃圾回收

    不能被垃圾回收情况:

    (1)如果 XMLHttpRequest 对象的状态是 OPENED并且已设置标识。

    (2)状态是HEADERS_RECEIVED

    (3)状态是LOADING且对以下事件注册了一个以上的事件监听: readystatechangeprogressabouterrorloadtimeoutloadend。

    如果 XMLHttpRequest 对象在连接尚存打开时被垃圾回收机制回收了,用户代理必须终止请求。

    XMLHttpRequest对象设置为未被引用

    所以xmlhttp设置为null时,即不指向XMLHttpRequest对象时,XMLHttpRequest对象可能不能被垃圾回收,仍然可正常处理事件,如readystatechange事件。

    参考:

    [1]https://www.w3.org/html/ig/zh/wiki/XMLHttpRequest

  • 相关阅读:
    IDEA 远程调试springboot
    Mybatitas-plus实现逻辑删除
    java通过poi导出excel
    js 展示当前时间
    Linux环境下服务自启
    Spring自带定时器@Scheduled
    Quartz任务调度框架相关方法、参数理解
    Quartz 实现定时任务
    mysql 使用union(all) + order by 导致排序失效
    mongodb的查询操作
  • 原文地址:https://www.cnblogs.com/fe-huahai/p/6525103.html
Copyright © 2011-2022 走看看