使用axios.all的情况
当一个页面连续调用的请求所需要的参数一致,并且在同一时间内请求时,可以考虑使用axios.all。
具体使用可以看下面的例子:
// 首先把需要请求的接口放进spread中let allPost = axios.all([ this.$api.post(storeDailySale, params), this.$api.post(storeSale, params), this.$api.post(storeTopProduct, params),]);allPost.then( // 为请求的接口取个别名。别名顺序不要求一一对应 axios.spread((storeSale, storeDailySale, storeTopProduct ) => { Toast.loading({ mask: true, message: '加载中...' }); // 销售图表渲染 if (Object.is(storeSale.data.code, 200) || Object.is(storeSale.data.code, 500)) { setTimeout(() => { Toast.clear(); }, 1000); this.chartData = storeSale.data.result; // 销售报表趋势图 this.initChart(this.chartData); // 初始化图表 } // 销售前50 if (Object.is(storeTopProduct.data.code, 200)) { this.salesTop = storeTopProduct.data.result; } // 销售汇总数据 if (Object.is(storeDailySale.data.code, 200)) { this.totalSales = storeDailySale.data.result[0]; } this.startDate = start; this.endDate = end; }))
优点:
同步调用接口,同步执行代码,减少代码量,清晰请求结构
缺点:
当其中某个接口报错,这几个同步执行的接口将不会在执行下去,导致页面空白。相当于一个报错,全部报错。