React读取properties配置文件转化为json对象并使用在url地址中

首先properties配置文件的格式是:

url=http://192.168.0.6
port=8081

我这里命名是strings.properties,因为要做到可配置,就是后期只是改变这个文件的url和port而不用重新打包前端代码,这个文件我放到了public下面
在这里插入图片描述
然后每个接口请求其实都需要拿到这个文件里面的配置包括url和port;
所以选择读取文件,读取文件是异步操作所以在封装请求方法的时候,出现了问题,可以打印出来读取的内容,但是暴露出去的对象是一个undefined;

首先,先读取到文件
在这里插入图片描述
拿到了一个字符串。经过处理变成一个json对象。

let changePROPERTIESTOJSON = async () => {
	//存储对象
    let propertiesObj = {}
    // 异步请求文件内容  我们可以使用原生或者axios 
    let res = await Promise.resolve(xfetch("GET", "strings.properties")).catch(err => {
        console.log(err, '读取文件错误')
    })
    console.log(res,"读取strings.properties文件的结果")
    //分割换行符
    let resArr = res.data.split('\r\n')
    // 拼成json对象
    for (let i = 0; i < resArr.length; i++) {
        resArr[i] = resArr[i].split('=')
        propertiesObj[resArr[i][0]] = resArr[i][1]
    }
    // 返回处理好的对象  这是我真实需要的对象
    return {
        xxxListAPI: propertiesObj.url + ":" + propertiesObj.port + "/xxx",
        zzzListAPI: propertiesObj.url + ":" + propertiesObj.port + "/zzz",
        yyyListAPI: propertiesObj.url + ":" + propertiesObj.port + "/yyy",
    }
}

这样的话我们拿到了一个permise对象,所以我们还需要一个函数来接收我们的url的拼接地址,

async function xfetchGetConfig(type, url, obj, field) {
    // 等文件获取到 之后再 返回一个新的peomise  
    //是一个对象 
    let CUCCListAPI = await changePROPERTIESTOJSON();
    //触发返回真实的请求
    return Promise.resolve(xfetch(type, CUCCListAPI[field] + url, obj));
}
// 解决类似问题可考虑创建一个新的函数 作为桥梁  重新返回一个新的promise 

export default xfetchGetConfig;

当发生一个异步的时候,想要用这个异步结果做其他操作,可以选择再封装一个函数做中间件。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值