HarmonyOS 网络请求loading

网络请求框架中统一处理loading显示或隐藏

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

参考demo

“@lyb/loading-dialog”: “^2.0.0”,

import LoadingDialog from '@lyb/loading-dialog'

export class RequestLoading {
  constructor() {
    this.initLoading()
  }

  public initLoading() {
    // 配置全局参数
    LoadingDialog.setGlobalSettings((setting) => {
      // setting.tintColor = Color.Black
      // setting.textColor = Color.Black
      // setting.backgroundColor = Color.Transparent
    })
  }

  public showLoading() {
    LoadingDialog.showLoading({ msg: '加载中...',})
  }

  public hideLoading() {
    LoadingDialog.hide()
  }
}
//AxiosRequest.ets
//AxiosRequest.ets
import {AxiosHttpRequest,errorHandler} from './AxiosHttp'
import { AxiosError, AxiosRequestHeaders, AxiosResponse } from '@ohos/axios';
import { BusinessError } from '@kit.BasicServicesKit';
import { RequestLoading } from '../requestLoading/RequestLoading';

const loadingInstance:RequestLoading = new RequestLoading()

/**
 * axios请求客户端创建
 */
const axiosClient = new AxiosHttpRequest({
  baseURL: "/api",
  timeout: 10 * 1000,
  checkResultCode: false,
  headers: {
    'Content-Type': 'application/json'
  } as AxiosRequestHeaders,
  interceptorHooks: {
    requestInterceptor: async (config) => {
      // 在发送请求之前做一些处理,例如打印请求信息
      axiosClient.config.showLoading = config.showLoading
      if (config.showLoading) {
        loadingInstance.showLoading()
      }
      if (config.checkLoginState) {
        // let hasLogin = await StorageUtils.get(StorageKeys.USER_LOGIN, false)
        // LogUtils.debug('网络请求Request 登录状态校验>>>', `${hasLogin.toString()}`);
        // if (hasLogin) {
        //   return config
        // } else {
        //   if (config.needJumpToLogin) {
        //     Router.push(RoutePath.TestPage)
        //   }
        //   throw new AxiosError("请登录")
        // }
      }
      return config;
    },
    requestInterceptorCatch: (err:BusinessError) => {
      if (axiosClient.config.showLoading) {
        loadingInstance.hideLoading()
      }
      return err;
    },
    responseInterceptor: (response:AxiosResponse) => {
      //优先执行自己的请求响应拦截器,在执行通用请求request的
      if (axiosClient.config.showLoading) {
        loadingInstance.hideLoading()
      }
      if(response.data.Response?.Result?.token) {
        AppStorage.setOrCreate('token',response.data.Response?.Result?.token)
      }
      // LogUtils.debug('网络请求响应Response:', `\n${JsonUtils.stringify(response.data)}`);
      if (response.status === 200) {
        return Promise.resolve(response.data);
      } else {
        return Promise.reject(response);
      }
    },
    responseInterceptorCatch: (error:BusinessError) => {
      if (axiosClient.config.showLoading) {
        loadingInstance.hideLoading()
      }
      // LogUtils.error("网络请求响应异常", error.toString())
      errorHandler(error);
      return Promise.reject(error);
    },
  }
});

export default axiosClient;
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 网络请求loading
44浏览 • 1回复 待解决
鸿蒙JS开发 接口请求loading?
5605浏览 • 1回复 待解决
鸿蒙JS开发 接口请求loading??
6415浏览 • 1回复 已解决
鸿蒙JS开发 蓠接口请求loading?
3765浏览 • 1回复 待解决
HarmonyOS 网络请求示例
43浏览 • 1回复 待解决
HarmonyOS 网络请求超时
48浏览 • 1回复 待解决
网络请求-GET请求传参
571浏览 • 1回复 待解决
HarmonyOS 请求网络图片
428浏览 • 1回复 待解决
HarmonyOS web拦截网络请求
39浏览 • 1回复 待解决
HarmonyOS WebView拦截网络请求
491浏览 • 1回复 待解决
HarmonyOS rcp取消网络请求
69浏览 • 1回复 待解决
HarmonyOS rcp网络请求报错1007900994
37浏览 • 1回复 待解决
HarmonyOS 网络请求返回的JSON
64浏览 • 2回复 待解决
HarmonyOS 网络发起多个并发请求
55浏览 • 1回复 待解决
HarmonyOS 网络请求报错SSL错误
68浏览 • 1回复 待解决
网络请求:gzip压缩使用
432浏览 • 1回复 待解决
HarmonyOS网络请求后JSON转换问题
770浏览 • 1回复 待解决
HarmonyOS rcp网络请求证书配置
35浏览 • 1回复 待解决
网络请求使用gzip压缩数据
2167浏览 • 1回复 待解决
网络请求抓包以及日志
831浏览 • 1回复 待解决
使用http请求网络地址
878浏览 • 1回复 待解决