返回

重拾封装后的Ajax器(Promise版)-技术指南

前端

在前端面试中,经常会出现这样的题目:实现一个封装的Ajax器(Promise版)。对于这个问题,我们可以按照以下步骤来实现:

  1. 创建一个Ajax类的构造函数,并在其中定义必要的属性和方法。
  2. 在Ajax类中定义一个send方法,该方法用于发送Ajax请求。
  3. 在send方法中,使用Promise对象来封装Ajax请求。
  4. 在Promise对象中定义then方法,该方法用于处理Ajax请求的成功和失败。
  5. 在then方法中,我们可以对Ajax请求的返回数据进行处理,也可以对请求失败的情况进行处理。

下面是一个封装的Ajax器的示例代码:

class Ajax {
  constructor() {
    this.xhr = new XMLHttpRequest();
  }

  send(url, method, data) {
    return new Promise((resolve, reject) => {
      this.xhr.open(method, url);
      this.xhr.setRequestHeader('Content-Type', 'application/json');
      this.xhr.send(JSON.stringify(data));

      this.xhr.onload = () => {
        if (this.xhr.status === 200) {
          resolve(this.xhr.response);
        } else {
          reject(new Error(this.xhr.statusText));
        }
      };

      this.xhr.onerror = () => {
        reject(new Error('Network Error'));
      };
    });
  }
}

const ajax = new Ajax();
ajax.send('http://example.com/api/users', 'GET').then(data => {
  console.log(data);
}).catch(error => {
  console.error(error);
});

这个Ajax器非常简单,它只支持GET和POST两种请求方法。如果需要支持更多的请求方法,我们可以对Ajax类进行扩展。

在使用这个Ajax器时,我们可以像使用普通的Promise对象一样使用它。例如,我们可以使用then方法来处理Ajax请求的成功和失败,也可以使用catch方法来处理请求失败的情况。

封装的Ajax器可以大大简化异步请求的处理,它使我们能够以一种更加简洁和易于理解的方式来编写异步代码。

参考资料