// 调用报错:Possible Unhandled Promise Rejection: [java.lang.ClassCastException] {cause: null, message: // "io.dcloud.uts.UTSJSONObject cannot be cast to uni.UNIA808F62.GetHomeDataResponse"}
class ResponseData<T> {
code: number | null = null
msg: string | null = null
time: string | null = null
data: T | null = null
}
function request<T>(options : RequestOptions<T>): Promise<T> {
return new Promise((resolve, reject) => {
const token = userState.token
const version = deviceState.appVersion
const header: UTSJSONObject = {}
if (version !== null) header['version'] = version
if (token !== null) header['token'] = token
const url = `${APP_BASE_URL}${options.url}`
uni.request<ResponseData<T>>({
url,
data: options.data,
header,
method: options.method,
timeout: 6000,
success(originResponse : RequestSuccess<ResponseData<T>>) {
const originData = originResponse.data // ResponseData<T> | null
if (originData != null && originData.code != null) {
// const code: number
// const msg: string | null
// const data: T | null
const { code, msg, data } = originData
if (`${code}` == '1') {
if (data != null) {
// const data: T & {}
resolve((data as T))
console.log('[ResponseData1] = ', data)
return
}
} else {
if (msg != null) {
mShowToast(msg)
reject(null)
return
}
}
}
console.log('[ResponseData2] = ', originData)
mShowToast('网络错误')
reject(null)
},
fail(err : RequestFail) {
const { errCode } = err
console.log('[ResponseFail] = ', err)
mShowToast(`网络错误:${errCode}`)
reject(err)
}
})
})
}
export function post<T>(url = '', data : null | any = null): Promise<T> {
return request<T>({
url,
data
} as RequestOptions<T>)
}
export type BannerItem = {
title : string
file : string
type : string
type_id : number
}
export type ProductItem = {
id : number
title : string
}
export type ProductList = {
id : number
title : string
list : ProductItem[]
}
export type GetHomeDataResponse = {
banner : BannerItem[]
hot_product : ProductList[]
hot_casus : ProductList[]
}
export const getHomeDataApi = () : Promise<GetHomeDataResponse> => post<GetHomeDataResponse>(`${prefix}/home`)
PUX
- 发布:2024-06-07 09:57
- 更新:2024-08-14 17:06
- 阅读:490
PUX (作者)
是现在暂时还不支持泛型按值传递,官方说后面会支持。
2024-10-23 11:12