前端/移动开发面试题更新 2026-08-05

请用 JavaScript 编写一个基于 Promise 的 AJAX 请求封装函数,要求包含具体实现代码。

前端/移动开发编码实现技术原理JavaScript

考察说明

考查对 Promise 与 XMLHttpRequest 结合使用的理解及异步封装能力。

回答思路

  1. 【回答框架 1】封装核心是返回一个 Promise 实例,在构造函数中执行 XMLHttpRequest 请求,并通过 resolve 与 reject 控制异步结果。
  2. 【回答框架 2】需要设置请求方法、URL、是否异步、请求头,并处理 onreadystatechange 事件,当 readyState 为 4 时根据 status 判断成功或失败。
  3. 【回答框架 3】支持参数配置,如 method、url、data、headers,并考虑 GET 参数拼接与 POST 数据序列化。
  4. 【回答框架 4】成功时调用 resolve 返回响应数据,失败时调用 reject 并传入错误信息或状态码。
  5. 【回答框架 5】考虑超时设置、错误处理、取消请求等优化点,并注意返回值类型的一致性。
  6. 【关键点 1】Promise 的 resolve 在请求成功时调用,reject 在失败时调用。
  7. 【关键点 2】XMLHttpRequest 的 readyState 为 4 时请求完成,通过 status 判断是否成功。
  8. 【关键点 3】支持自定义请求头,如设置 Content-Type 为 application/json。
  9. 【易错点 1】忘记处理 readyState 为 4 之外的状态可能导致重复调用。
  10. 【易错点 2】未设置 withCredentials 可能影响跨域请求中的 Cookie 携带。
  11. 【易错点 3】IE 等旧浏览器可能不支持 Promise,需要 polyfill。