我知道axios请求是异步的,但是我已经做了优化,但是为什么刷新还是空数组,请求指教
const play = playlist.playlist || [];
不是应该这个样子写么
没理解,请再说清晰一点
network里 看看数据回来了没
确实axios已经是链式处理了,但是按改造前的代码,现在的处理方式还是不太优美,我们可以把这里面的if-else拆分成多个拦截器,但是这里面的代码还是有太多判断而且不利于扩展。
相比于axios的拦截器,责任链模式是一种更通用的,对请求进行各种不同处理的方式,更利于划分代码,而且以后就算不用axios了,现有的责任链也可以直接复用。
其次,使用TypeScrpit实现责任链模式,我们可以用面向接口的方式,来实现我们处理请求的方法。
!!!记住一点,使用TypeScrpit的优势,除了类型检查,更重要的是“更好的面向接口编程”。
针对空数组请求的问题,需要先排查是否是数据请求的问题还是数据处理的问题,可以通过在控制台输出数据,检查数据是否正常获取。如果数据正常获取,可以考虑以下解决方案:
尝试更改请求方式,例如从get改为post请求,或者获取数据时添加参数,看是否能够正常获取数据。
检查请求接口的路径是否正确,是否有拼写错误等问题。
检查请求数据的格式是否正确,例如是否使用了错误的请求头、请求参数等。
在axios请求拦截器中,打印请求的参数、请求头等信息,检查是否有问题。
如果以上方案不能解决问题,可以在catch函数中添加错误处理函数来处理错误信息。错误处理函数可以使用参考资料中的封装公共错误请求函数,封装好错误处理逻辑后再在各个请求中使用即可。
如果还不能解决问题,可以查看控制台中的报错信息来定位问题,或者提供更多的错误信息和代码,以便更好地定位问题。