实现一个函数 get(url, data),发送 GET 请求

推荐答案

-- -------------------- ---- -------
-------- -------- ----- -
    ------ --- ----------------- ------- -- -
        ----- --- - --- -----------------
        ----- ------ - --- ---------------------------------
        ----- ------- - ------ - ------------------ - ----

        --------------- -------- ------
        ---------- - ---------- -
            -- ----------- -- --- -- ---------- - ---- -
                --------------------------
            - ---- -
                ---------- -------------- ------ ---- ------ -----------------
            -
        --
        ----------- - ---------- -
            ---------- -------------- ----------
        --
        -----------
    ---
-

本题详细解读

1. 函数定义

get(url, data) 是一个异步函数,用于发送 GET 请求。它接受两个参数:

  • url: 请求的目标 URL。
  • data: 一个对象,包含要附加到 URL 的查询参数。

2. 创建 XMLHttpRequest 对象

使用 XMLHttpRequest 对象来发送 HTTP 请求。XMLHttpRequest 是浏览器提供的原生 API,用于与服务器进行交互。

3. 处理查询参数

data 参数是一个对象,需要将其转换为 URL 查询字符串。使用 URLSearchParams 对象可以方便地将对象转换为查询字符串。如果 data 为空,则直接使用原始 URL。

4. 打开请求

使用 xhr.open('GET', fullUrl, true) 打开请求。true 表示请求是异步的。

5. 处理响应

xhr.onload 回调函数中处理响应。如果状态码在 200 到 299 之间,表示请求成功,调用 resolve 并返回响应文本。否则,调用 reject 并返回错误信息。

6. 处理错误

xhr.onerror 回调函数中处理网络错误。如果请求失败,调用 reject 并返回错误信息。

7. 发送请求

最后,调用 xhr.send() 发送请求。由于是 GET 请求,不需要传递请求体。

8. 返回 Promise

函数返回一个 Promise 对象,调用者可以使用 thencatch 来处理成功和失败的情况。

纠错
反馈