You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨文件调用Axios请求时,如何获取请求发起时刻的时间?

解决方案

要获取调用WebService的时刻(发起HTTP请求的时间点),无需等待响应返回,可通过修改getRequest函数,让它同时返回请求开始时间和响应结果。具体实现如下:

1. 修改Request.js中的getRequest函数

调整逻辑,在发起请求前记录时间,最后返回包含开始时间和响应的对象:

export const getRequest = async (url, baseURL, headers) => {
  // 记录调用WebService的时刻(发起请求前)
  const requestStartTime = new Date().getTime();
  const HTTP = axios.create({
    baseURL,
    headers,
  });

  // 保留拦截器计算请求耗时(可选)
  HTTP.interceptors.response.use((response) => {
    const currentTime = new Date().getTime();
    response.headers["request-duration"] = currentTime - requestStartTime;
    return response;
  });

  const response = await HTTP.get(url);
  // 返回包含开始时间和响应的对象
  return {
    response,
    requestStartTime
  };
};

2. 在Users.vue中获取开始时间

调用getRequest后直接解构出开始时间使用:

async getUsers() {
  try {
    let url = `/users`;
    let baseUrl = `baseURL`;
    let headers = {};
    // 解构拿到响应和请求开始时间
    const { response: responseUsers, requestStartTime } = await getRequest(url, baseUrl, headers); 
    
    // 直接使用请求开始时间
    console.log("调用WebService的时刻(毫秒时间戳):", requestStartTime);
    // 依然可以获取计算好的请求耗时
    console.log("请求耗时(毫秒):", responseUsers.headers["request-duration"]);

    if (responseUsers.status === 200) {
      const { data } = responseUsers;
      this.users = data;
    }
  } catch (error) {
    console.error(error);
  }
}

额外优化:复用axios实例

若应用频繁调用getRequest,每次创建新axios实例会造成性能开销,可抽离实例创建逻辑复用:

// 抽离axios实例创建逻辑
const createAxiosInstance = (baseURL, headers) => {
  return axios.create({
    baseURL,
    headers,
  });
};

export const getRequest = async (url, baseURL, headers) => {
  const requestStartTime = new Date().getTime();
  const HTTP = createAxiosInstance(baseURL, headers);
  
  HTTP.interceptors.response.use((response) => {
    const currentTime = new Date().getTime();
    response.headers["request-duration"] = currentTime - requestStartTime;
    return response;
  });
  
  const response = await HTTP.get(url);
  return { response, requestStartTime };
};

内容的提问来源于stack exchange,提问作者TAHER El Mehdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:27:24