當(dāng)前段發(fā)送請(qǐng)求時(shí) 后端返回?cái)?shù)據(jù)中的大數(shù)字問題 導(dǎo)致 ID不一致 無法繼續(xù)獲取響應(yīng)的數(shù)據(jù)
JavaScript 能夠準(zhǔn)確表示的整數(shù)范圍在-2^53到2^53之間(不含兩個(gè)端點(diǎn)),超過這個(gè)范圍挽放,無法精確表示這個(gè)值绍赛,這使得 JavaScript 不適合進(jìn)行科學(xué)和金融方面的精確計(jì)算辑畦。
利用json-bigint處理大數(shù)字問題
npm i json-bigint
import axios from 'axios'
// 遇到問題:后端返回的超大數(shù)字無法在JS中精確表示
// 解決方案:借助 json-bigint 將超大數(shù)字轉(zhuǎn)成字符串即可
import bigint from 'json-bigint'
const JSONBig = bigint({"storeAsString": true}) // 通過該配置,讓超大數(shù)字轉(zhuǎn)為字符串
const request = axios.create({
? baseURL: 'http://ttapi.research.itcast.cn/', // 接口基礎(chǔ)路徑
? // transformResponse 允許自定義原始的響應(yīng)數(shù)據(jù)(字符串)
? transformResponse: [function (data) {
? ? try {
? ? ? // 如果轉(zhuǎn)換成功則返回轉(zhuǎn)換的數(shù)據(jù)結(jié)果
? ? ? return JSONBig.parse(data)
? ? ? //return JSON.parse(data)
? ? } catch (err) {
? ? ? // 如果轉(zhuǎn)換失敗航闺,則包裝為統(tǒng)一數(shù)據(jù)格式并返回
? ? ? return {
? ? ? ? data
? ? ? }
? ? }
? }]
})
export default request