首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XMLHttpRequest状态永远不会变为DONE

XMLHttpRequest是一种用于在浏览器和服务器之间发送HTTP请求和接收响应的API。它可以实现异步通信,使得网页能够在不刷新的情况下更新部分内容。

XMLHttpRequest对象有一个readyState属性,用于表示请求的状态。该属性的值会随着请求的不同阶段而变化,包括以下五个可能的取值:

  1. 0 (UNSENT): 初始状态,XMLHttpRequest对象已创建,但尚未调用open()方法。
  2. 1 (OPENED): open()方法已被调用,但尚未调用send()方法。
  3. 2 (HEADERS_RECEIVED): send()方法已被调用,并且头部和状态已经可获得。
  4. 3 (LOADING): 响应体正在被接收。
  5. 4 (DONE): 响应已经完全接收。

根据题目要求,XMLHttpRequest状态永远不会变为DONE。这意味着无论请求是否成功或失败,readyState属性都不会变为4。这种情况可能发生在以下几种情况下:

  1. 请求尚未发送:如果没有调用send()方法,那么readyState属性将一直保持为0。
  2. 请求正在发送或接收:如果请求正在发送或接收响应体,readyState属性将保持在1、2或3的状态。
  3. 请求被中止:如果在请求过程中调用了abort()方法,readyState属性将保持在1或0的状态。
  4. 请求超时:如果请求超时,readyState属性将保持在1或0的状态。

对于这个问题,由于XMLHttpRequest状态永远不会变为DONE,无法获得请求的最终结果。因此,建议使用其他方法或API来实现异步通信和获取响应结果,例如使用fetch API或使用现代JavaScript框架(如React、Angular、Vue)中提供的HTTP库。

腾讯云相关产品和产品介绍链接地址:

  • 云开发(https://cloud.tencent.com/product/tcb):提供一站式后端云服务,包括云函数、数据库、存储、托管等,可用于快速开发和部署应用程序。
  • API网关(https://cloud.tencent.com/product/apigateway):提供安全、高性能的API访问服务,可用于构建和管理API接口。
  • CDN加速(https://cloud.tencent.com/product/cdn):提供全球加速服务,可将静态资源缓存到全球节点,提高网站的访问速度和用户体验。
  • 腾讯云函数(https://cloud.tencent.com/product/scf):基于事件驱动的无服务器计算服务,可实现按需运行代码,无需管理服务器。
  • 云数据库MySQL版(https://cloud.tencent.com/product/cdb_mysql):提供稳定可靠的云数据库服务,支持高可用、备份恢复、自动扩容等功能。

请注意,以上仅为腾讯云的一些相关产品,其他云计算品牌商也提供类似的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Promise基础

的基础用法 function getURL(url) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest...2. .then和.done的区别 在其他类库里提供了done方法,可以用来代替then,但是ES6 Promises和Promises/A+规范中并没有对done做出规定。...if (typeof Promise.prototype.done === 'undefined') { Promise.prototype.done = function (onFulfilled...Promise.all 接收一个promise对象的数组作为参数,当这个数组里的所有promise对象全部变为resolve或reject状态的时候,它才会去调用 .then 方法。...换句话说,Promise代表了一个对象,这个对象的状态现在还不确定,但是未来一个时间点它的状态要么变为正常值(FulFilled),要么变为异常值(Rejected);而Deferred对象表示了一个处理还没有结束的这种事实

39620

前端 JS 之 AJAX 简介及使用

如果值为 false,send() 方法直到收到答复前不会返回。如果 true,已完成事务的通知可供事件监听器使用。...从创建 XMLHttpRequest 对象开始,到发送数据、接收数据、XMLHttpRequest 对象一共会经历以下 5 种状态: 未初始化状态。...在创建完 XMLHttpRequest 对象时,该对象处于未初始化状态,此时 XMLHttpRequest 对象的 readyState 属性值为 0。 初始化状态。...此时,XMLHttpRequest 对象处于接收数据状态XMLHttpRequest 对象的 readyState 属性值为 3。 完成状态。...值得注意的是,如果 XMLHttpRequest 出错,浏览器返回的 status 也为0: UNSENT(未发送) 0 OPENED(已打开) 0 LOADING(载入中) 200 DONE(完成)

1K10

Vue 前后端交互基础

♞ 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 rejected。...只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对 Promise 对象添加回调函数,也会立即得到这个结果。...resolve 函数的作用是,将 Promise 对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject...函数的作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。   ...第一个回调函数是 Promise 对象的状态变为 resolved 时调用,第二个回调函数是 Promise 对象的状态变为 rejected 时调用。其中,第二个函数是可选的,不一定要提供。

2.1K50

ES6中的Promise对象作用

resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是...,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。...第二个then方法指定的回调函数,就会等待这个新的Promise对象状态发生变化。如果变为resolvee,就调用funcA,如果状态变为rejected,就调用funcB。..., error); 6}); 上面代码中,getJSON方法返回一个 Promise 对象,如果该对象状态变为resolved,则会调用then方法指定的回调函数;如果异步操作抛出错误,状态就会变为rejected...上面代码中,Promise 在resolve语句后面,再抛出错误,不会被捕获,等于没有抛出。因为 Promise 的状态一旦改变,就永久保持该状态不会再变了。

80420

深入浅出Promise,循序渐进掌握JavaScript异步编程

一旦 Promise 的状态变为 fulfilled 或 rejected ,就称为 resolved (已解决)。在 resolved 状态下, Promise 的结果值就被确定了。...需要注意的是, Promise 的状态一旦改变就不会再改变。因此,即使异步操作完成后再次调用 resolve 或 reject 函数,也不会对 Promise 的状态产生影响。二....该新的Promise实例在数组中的所有 Promise 实例都变为fulfilled状态后,才会变为fulfilled状态,并将每个 Promise 实例的结果值组成一个数组传递给回调函数。...该新的 Promise 实例在数组中的第一个 Promise 实例变为fulfilled或rejected状态后,即变为对应的状态,并将第一个 Promise 实例的结果(或错误信息)传递给回调函数。...该方法返回一个新的 Promise 实例,它在回调函数执行完毕后,根据之前 Promise 实例的状态变为对应的状态

45610

手给 Safari 提了一个Bug,让我意外收获了这些新知识

不过统一处理也存在一些不合理的场景,比如使用 Node.js 做 HTTP 代理服务时,转发后的请求头都自动变为小写了,那么会导致下层服务获取不到原始的请求头字段,这样会在传输的过程中破坏原始数据[参考...在重定向的情况下,我们将获得一个特殊的响应对象,其中包含 response.type="opaqueredirect" 和归零/空状态以及大多数其他属性。...XMLHttpRequestXMLHttpRequest 写了一个 Demo,发现浏览器也是会自动对重定向做出处理,打印的是重定向后最终的状态码,值为 200,并不会打印 307,并且会获取到重定向后的返回值...console.log(xhr.response); }; xhr.onreadystatechange = function () { if (this.readyState === this.DONE...}); xhr.send(); xhr.onreadystatechange = function () { if (this.readyState === this.DONE

1.4K20

前后端交互的弯弯绕绕

因为,普通用户不会去控制台里看错误信息,我们要编写代码拿到错误并展示给用户在页面上,使用 axios 的 catch 方法,捕获这次请求响应的错误并做后续处理,具体的错误处理过程如下:如果请求成功发出且服务器也响应了状态码...Promise对象将保持这个状态直到它被兑现(fulfilled)或被拒绝(rejected)已兑现(fulfilled):当异步操作成功完成,并且Promise对象得到了一个值时,它就会转变为兑现状态...在这个状态下,我们可以通过then()方法设置的回调函数来获取这个值;已拒绝(rejected):如果异步操作失败,或者在执行过程中抛出了一个错误,Promise对象就会变为拒绝状态 在这个状态下...:遇到resolve或者reject之前,都处于这个状态,且可以改变: 但如果确定了状态fulfilled/reject,则结果将永远不变,不能再次修改;Promise 结合 XHR使用Promise...Promise 完成,且只能在 async 函数内部使用;它会暂停 async 函数的执行,直到 Promise 的状态变为 fulfilled 或 rejected如果 Promise 成功解决,await

8120

《深入浅出Node.js》:Node异步编程解决方案 之 ES6 Promise

只有异步操作的结果才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。...只要这两种状态之一发生了,状态就凝固,不会再改变,会一直保持这个结果。 通过Promise对象,可以把异步操作以同步操作的流程表达出来,避免层层嵌套的回调函数。...resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是...,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。...第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。其中,第二个函数是可选的,不一定要提供。

88430

Ajax 之战:XMLHttpRequest 与 Fetch API

对象的 readyState 属性则返回当前状态: 0 (uninitialized) - 请求未初始化 1(loading)- 服务器连接建立 2(loaded)- 请求收到 3(interactive...)- 处理请求 4(complete)- 请求完成,响应准备就绪 在达到状态 4 之前,几个函数就可以做很多事情。...— 如果有一个新的 (未过期的) 匹配,则使用浏览器缓存;如果没有,浏览器会发出一个带条件的请求来检查资源是否已改变,并在必要时会发出新的请求 'no-store' —— 绕过浏览器缓存,并且网络响应不会更新它...凭证控制 XMLHttpRequest 总是发送浏览器 cookie,Fetch API 不会发送 cookie,除非你显式地在第二个参数 init 对象中设置 credentials 属性。...} = await reader.read(); if (done) break; console.log(value); } 服务器端支持 Deno 和 Node 18 中完全支持 Fetch

2.2K20

XMLHttpRequest对象的属性和事件分析

({ url: "script.php", method: "POST", data: { id : menuId }, dataType: "html" }); request.done...XMLHttpRequest对象的属性和事件  当XMLHttpRequest对象把一个HTTP请求发送到服务器时将经历若干种状态:一直等待直到请求被处理;然后,它才接收一个响应。  ...ReadyState取值 描述 0 描述一种"未初始化"状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化。...1 描述一种"发送"状态;此时,代码已经调用了XMLHttpRequest open()方法并且XMLHttpRequest已经准备好把一个请求发送到服务器。...3 描述一种"正在接收"状态;此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收结束。 4 描述一种"已加载"状态;此时,响应已经被完全接收。

80900

前端基础进阶(十五):详解 Promise对象

一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。...第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。这两个函数都是可选的,不一定要提供。...这时,第二个then方法指定的回调函数,就会等待这个新的Promise对象状态发生变化。如果变为resolved,就调用第一个回调函数,如果状态变为rejected,就调用第二个回调函数。...下面是一个例子,如果指定时间内没有获得结果,就将 Promise 的状态变为reject,否则变为resolve。...该方法返回的新的 Promise 实例,一旦发生状态变更,状态总是fulfilled,不会变成rejected。

1.1K20
领券